| # Copyright 2014 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 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}" |
| } |