| # 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/* |
| } |