# Copyright 2019 The Chromium OS Authors. All rights reserved.
# Distributed under the terms of the GNU General Public License v2.

# This package installs a kernel module loadpin-trigger.ko and configures
# OS to load the module on boot. The kernel module calls
# kernel_read_file_from_path to load a dummy file into kernel, which will
# trigger loadpin. We used to rely on loading kernel modules to pin to
# rootfs, but the recent kernel param loadpin.exclude=kernel-module we added
# makes loadpin ignore module loading.

EAPI=6
inherit cos-linux-mod

DESCRIPTION="Kernel module to trigger loadpin on boot"

LICENSE="GPL-2"
SLOT="rt"
KEYWORDS="*"

DEPEND="virtual/linux-sources"

RDEPEND="
	${DEPEND}
"

S="${WORKDIR}"

# Prevent kernel module signature being striped.
STRIP_MASK+=" *.ko"

MODULE_NAME="loadpin_trigger"

pkg_setup() {
	MODULE_NAMES="${MODULE_NAME}(::)"
	# We cannot rely on auto detection because we have two kernels installed.
	KERNEL_DIR="$(find "${ROOT}/usr/src" -maxdepth 1 -name "lakitu-kernel-rt-[0-9]*")"
	KBUILD_OUTPUT="${KERNEL_DIR}/build"
	linux-mod_pkg_setup
	BUILD_PARAMS="KERNEL_SOURCES=${KV_DIR} KBUILD_OUTPUT=${KBUILD_OUTPUT}"
}

src_prepare() {
	cp "${FILESDIR}"/* .
	cos-linux-mod_src_prepare
}

src_compile() {
	cos-linux-mod_src_compile
}

src_install() {
	cos-linux-mod_src_install
}
