netmodule-wireless-linux/layers/meta-netmodule-legacy-bsp/recipes-kernel/linux/linux-nrsw_%.bb

136 lines
4.5 KiB
BlitzBasic

HOMEPAGE = "http://www.kernel.org"
DESCRIPTION = "Linux kernel for various NetModule hardware"
LICENSE = "GPL-2.0-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
inherit kernel
ROOTFS_RELEASE ?= "0.0.0.0"
KERNEL_MODULES_CONF_DIR = "${BPN}/modules"
require ${KERNEL_MODULES_CONF_DIR}/${DISTRO}.inc
require ${KERNEL_MODULES_CONF_DIR}/${NM_TARGET}.inc
headers_to_copy = "\
bd-key.h \
bofh-key.h \
license-key.h \
"
# Order matters here (last has highest priority):
config_fragments = "${@' '.join(['conf/' + f for f in "\
${NM_TARGET}.cfg \
".split()])}"
SRC_URI = "git://git.netmodule.intranet/NRSW/nmlinux-kernel.git;protocol=ssh;user=gitea;branch=nmlinux-kernel-upgrade\
${@' '.join(['file://' + f for f in " ${headers_to_copy} ${config_fragments} verify_config_merge_log.py ".split()])} \
file://0001-compile-fix.patch \
"
SRCREV ?= "${AUTOREV}"
PV = "5.X+git${SRCPV}"
PR = "r0"
S = "${WORKDIR}/git"
INSANE_SKIP_${PN} += "version-going-backwards"
DEPENDS += "openssl-native"
FILESEXTRAPATHS:prepend := "${THISDIR}/${BPN}:"
# Do not configure kernel in kernel_do_configure() (defined in kernel.bbclass).
# Instead the configuration command will be executed from
# scripts/kconfig/merge_config.sh (see do_configure:append() in this file).
KERNEL_CONFIG_COMMAND = "true"
# The following is stolen from:
# nrsw-oe-main/openembedded-core/meta/recipes-core/busybox/busybox.inc
# returns all the elements from the src uri that are .cfg files
def find_cfgs(d):
sources=src_patches(d, True)
sources_list=[]
for s in sources:
if s.endswith('.cfg'):
sources_list.append(s)
return sources_list
do_configure:append() {
re="\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)"
NBSW_VERSION_MAJOR=$(echo ${ROOTFS_RELEASE} | sed "s/${re}/\1/")
NBSW_VERSION_MINOR=$(echo ${ROOTFS_RELEASE} | sed "s/${re}/\2/")
NBSW_VERSION_PATCH=$(echo ${ROOTFS_RELEASE} | sed "s/${re}/\3/")
NBSW_VERSION_BUILD=$(echo ${ROOTFS_RELEASE} | sed "s/${re}/\4/")
cat << EOF > ${S}/include/nbsw.h
#define NBSW_VERSION_MAJOR ${NBSW_VERSION_MAJOR}
#define NBSW_VERSION_MINOR ${NBSW_VERSION_MINOR}
#define NBSW_VERSION_PATCH ${NBSW_VERSION_PATCH}
#define NBSW_VERSION_BUILD ${NBSW_VERSION_BUILD}
#define NBSW_VERSION_DATE "$(date +%Y%m%d%H%M%S)"
#define NBSW_PROFILE "$(echo ${NM_TARGET} | awk '{ print toupper($0) }')"
#define NBSW_TARGET_${NM_TARGET}_${NM_ARCH} 1
EOF
for f in ${headers_to_copy}; do
cp ${WORKDIR}/${f} ${S}/include/
done
openssl x509 -in ${S}/firmware.crt -outform PEM -out ${S}/certs/firmware_signing.pem
bbnote "Writing genkey config to ${B}/certs/x509.genkey"
mkdir -p ${B}/certs/
cat > ${B}/certs/x509.genkey << EOF
[ req ]
default_bits = 2048
distinguished_name = req_distinguished_name
prompt = no
string_mask = utf8only
x509_extensions = myexts
[ req_distinguished_name ]
O = ${VENDOR_NAME} ${VENDOR_EXT}
L = ${VENDOR_LOCATION}
CN = ${PRODUCT} signing key
emailAddress = ${VENDOR_EMAIL}
[ myexts ]
basicConstraints=critical,CA:FALSE
keyUsage=digitalSignature
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid
EOF
# install BOFH key, if available
PROFILE=$(echo "${NM_TARGET}" | tr '[:lower:]' '[:upper:]')
BOFH_CERT="${BOFH_KEY_PATH}/public/bofhkey-${PROFILE}.pub.crt"
if [ -r "$BOFH_CERT" ] ; then
BOFH_KEY_FILE="${S}/include/bofh-key.h"
GENBOFHKEY="genbofhkey"
if ! $GENBOFHKEY -c $BOFH_CERT -o $BOFH_KEY_FILE; then
bbfatal_log "unable to add bofh key"
fi
fi
# Configuration fragments support adapted from file:
# nrsw-oe-main/openembedded-core/meta/classes/kernel-yocto.bbclass
merge_config_sh=${S}/scripts/kconfig/merge_config.sh
configs="${@" ".join(find_cfgs(d))}"
log_dir=${LOG_DIR}/${DISTRO}/${MACHINE}
log_file=${log_dir}/$(date +"%Y-%m-%d_%H-%M-%S")_kernel_merge_config.log
mkdir -p ${log_dir}
cd ${S}
if ! CFLAGS="${CFLAGS} ${TOOLCHAIN_OPTIONS}" \
HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" \
HOSTCPP="${BUILD_CPP}" \
CC="${KERNEL_CC}" \
ARCH=${ARCH} \
${merge_config_sh} -O ${B} -r -n ${configs} > ${log_file} 2>&1 ; then
bbfatal_log "merge_config.sh failed. Log file is located at:
${log_file}"
fi
if ! ${WORKDIR}/verify_config_merge_log.py ${log_file} ; then
bbfatal_log "config merge log verification failed. For details see:
${log_file}"
fi
}
FILES_${KERNEL_PACKAGE_NAME}-image += "${KERNEL_IMAGEDEST}/kernel.bin"