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

EAPI=6

CROS_WORKON_COMMIT="7408a5a1fd5f268bf6390cd0da937b33c247dec0"
CROS_WORKON_TREE="e3efd28f5943ab2b71f2533db124b961cb40ba24"
CROS_WORKON_REPO="https://cos.googlesource.com"
CROS_WORKON_PROJECT="third_party/kernel"
CROS_WORKON_LOCALNAME="kernel/v5.4"

CHROMEOS_KERNEL_CONFIG="${FILESDIR}/${CHROMEOS_KERNEL_CONFIG_FILE}"

# This must be inherited *after* EGIT/CROS_WORKON variables defined
inherit cros-workon cos-kernel

STRIP_MASK+=" /usr/src/${P}/build/vmlinux"
STRIP_MASK+=" *.ko"

DESCRIPTION="COS Linux Kernel 5.4"
HOMEPAGE="https://cloud.google.com/container-optimized-os"
KEYWORDS="*"

COS_KERNEL_X509_GENKEY="${FILESDIR}/x509.genkey"
COS_KERNEL_ROOT_CERT="${FILESDIR}/lakitu_root_cert.pem"
COS_KERNEL_GPU_ROOT_CERT="${FILESDIR}/lakitu_gpu_root_cert.pem"

src_configure() {
	cos-kernel_src_configure
}

# Change for EAPI=6
src_prepare() {
	default
	cos-kernel_src_prepare
}

src_install() {
	cos-kernel_src_install
}

# Change the following (commented out) number to the next prime number
# when you change base.config.  This workaround will force the
# ChromeOS CQ to uprev sys-kernel/kernel-5_4 ebuild and pick up the
# configuration changes.  In absence of this workaround the config changes
# would not be picked up unless there was a code change in kernel source tree.
#
# NOTE: There's nothing magic keeping this number prime but you just need to
# make _any_ change to this file.  ...so why not keep it prime?
#
# The coolest prime number is: 5
