136 lines
4.5 KiB
BlitzBasic
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"
|
|
|