# 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
CROS_WORKON_SUBTREE="common-mk spaced .gn"

PLATFORM_SUBDIR="spaced"

inherit cros-workon platform user

DESCRIPTION="Disk space information daemon for Chrome OS"
HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/spaced/"

LICENSE="BSD-Google"
KEYWORDS="~*"
IUSE="+seccomp"

pkg_preinst() {
	enewuser "spaced"
	enewgroup "spaced"
}

src_install() {
	# D-Bus configuration.
	insinto /etc/dbus-1/system.d
	doins dbus_bindings/org.chromium.Spaced.conf

	dolib.so "${OUT}"/lib/libspaced.so
	dosbin "${OUT}"/spaced
	dosbin "${OUT}"/spaced_cli

	insinto /etc/init
	doins init/spaced.conf

	if use seccomp; then
		local policy="seccomp/spaced-seccomp-${ARCH}.policy"
		local policy_out="${ED}/usr/share/policy/spaced-seccomp.policy.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}"
	fi

	insinto "/usr/include/spaced"
	doins ./*.h
}

platform_pkg_test() {
	platform_test "run" "${OUT}"/libspaced_unittests
}
