# 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="5"

inherit systemd user

DESCRIPTION="Init scripts for Lakitu"
HOMEPAGE=""
SRC_URI=""

LICENSE="BSD-Google"
SLOT="0"
KEYWORDS="*"
IUSE=""

# vboot_reference for crossystem
RDEPEND="
	chromeos-base/chromeos-installer
	chromeos-base/vboot_reference
	sys-apps/rootdev
	sys-apps/systemd
	sys-apps/system-sysdaemons
"

S="${WORKDIR}"

src_install() {
	# We want /sbin, not /usr/sbin, etc.
	into /

	dosbin "${FILESDIR}"/chromeos_shutdown
	systemd_dounit "${FILESDIR}"/chromeos-shutdown.service
	systemd_enable_service shutdown.target chromeos-shutdown.service

	systemd_dounit "${FILESDIR}"/home.mount
	systemd_enable_service local-fs.target home.mount
	systemd_dounit "${FILESDIR}"/var.mount
	systemd_enable_service local-fs.target var.mount
	systemd_dounit "${FILESDIR}"/var-lib-google.mount
	systemd_enable_service local-fs.target var-lib-google.mount
	systemd_dounit "${FILESDIR}"/var-lib-google-remount.service
	systemd_dounit "${FILESDIR}"/mnt-stateful_partition-make-private.service
	systemd_dounit "${FILESDIR}"/dev-shm-remount.service
	systemd_enable_service local-fs.target dev-shm-remount.service
	systemd_dounit "${FILESDIR}"/check-secure-boot.service
	systemd_enable_service multi-user.target check-secure-boot.service
	systemd_dounit "${FILESDIR}"/prep-logs-dev@.service

	systemd_newtmpfilesd "${FILESDIR}"/chromeos-init.tmpfiles chromeos-init.conf

	insinto "$(systemd_get_unitdir)/sys-kernel-debug.mount.d"
	newins "${FILESDIR}"/sys-kernel-debug-lakitu.conf lakitu.conf

	insinto "$(systemd_get_systemunitdir)/sys-fs-fuse-connections.mount.d"
	newins "${FILESDIR}"/sys-fs-fuse-connections-lakitu.conf lakitu.conf

	insinto "$(systemd_get_unitdir)/tmp.mount.d"
	newins "${FILESDIR}"/tmp-lakitu.conf lakitu.conf

	exeinto "$(systemd_get_unitdir)-generators"
	doexe "${FILESDIR}"/chromeos-mount-generator

	insinto "$(systemd_get_unitdir)/update-engine.service.d"
	newins "${FILESDIR}"/update-engine-secure-boot.conf secure-boot.conf

	insinto "$(systemd_get_unitdir)/crash-sender.service.d"
	newins "${FILESDIR}"/crash-sender-send-immediately.conf send-immediately.conf

	exeinto "/usr/share/cloud"
	doexe "${FILESDIR}"/stateful-dev-sym-sorted
	doexe "${FILESDIR}"/is-secure-boot
	doexe "${FILESDIR}"/prep-logs-dev
}

pkg_preinst() {
	# Add the syslog user
	# TODO: this should not be necessary. Remove.
	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"
}
