blob: e0045b5e5930a8d3b397a928260fecb3339ad13d [file] [log] [blame]
# Copyright 2018 The Chromium OS Authors. All rights reserved.
# Distributed under the terms of the GNU General Public License v2
EAPI=6
inherit cros-constants libchrome
DESCRIPTION="Packages tools for termina VM containers"
HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/vm_tools"
LICENSE="BSD-Google"
SLOT="0"
KEYWORDS="*"
IUSE="vm_borealis"
S="${WORKDIR}"
RDEPEND="
x11-themes/cros-adapta
"
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 )
"
src_install() {
local tools=(
"/usr/bin/chunnel"
"/usr/bin/garcon"
"/usr/bin/guest_service_failure_notifier"
"/usr/bin/notificationd"
"/usr/sbin/vshd"
)
if use vm_borealis; then
tools+=(
"/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=(
"/$(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" \
)
fi
mapfile -t dlopen_libs < <("${CHROMITE_BIN_DIR}"/lddtree --root="${SYSROOT}" --list "${dlopen_libs[@]}")
cp -aL "${dlopen_libs[@]}" "${WORKDIR}"/container_pkg/lib/
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
doins -r "${WORKDIR}"/container_pkg/*
}