kernel-initramfs: define this package to include the initramfs image for kernel boot

Signed-off-by: Lans Zhang <jia.zhang@windriver.com>
This commit is contained in:
Lans Zhang
2017-07-03 09:21:44 +08:00
parent 0551bc8d84
commit 5135786fa3
2 changed files with 132 additions and 0 deletions
@@ -0,0 +1,58 @@
inherit user-key-store deploy
# Always fetch the latest initramfs image
do_install[nostamp] = "1"
fakeroot python do_sign() {
initramfs = None
if d.getVar('BUNDLE', True) == '0':
initramfs = d.expand('${D}/boot/${INITRAMFS_IMAGE}${INITRAMFS_EXT_NAME}.cpio.gz')
else:
initramfs = d.expand('${D}/boot/${KERNEL_IMAGETYPE}-initramfs${INITRAMFS_EXT_NAME}')
if initramfs == None or not os.path.exists(initramfs):
return
uks_sel_sign(initramfs, d)
}
addtask sign after do_install before do_deploy do_package
do_deploy() {
initramfs=""
initramfs_dest=""
if [ "${BUNDLE}" = "0" ]; then
initramfs="${D}/boot/${INITRAMFS_IMAGE}${INITRAMFS_EXT_NAME}.cpio.gz"
initramfs_dest="${DEPLOYDIR}/${INITRAMFS_IMAGE}-${MACHINE}.cpio.gz"
else
initramfs="${D}/boot/${KERNEL_IMAGETYPE}-initramfs${INITRAMFS_EXT_NAME}"
initramfs_dest="${DEPLOYDIR}/${KERNEL_IMAGETYPE}-initramfs-${MACHINE}.bin"
fi
if [ -f "$initramfs.p7b" ]; then
install -d "${DEPLOYDIR}"
install -m 0644 "$initramfs.p7b" "$initramfs_dest.p7b"
fi
}
addtask deploy after do_install before do_build
pkg_postinst_${PN}_append() {
if [ "${BUNDLE}" = "1" ] ; then
update-alternatives --install "/boot/${KERNEL_IMAGETYPE}.p7b" \
"${KERNEL_IMAGETYPE}.p7b" \
"/boot/${KERNEL_IMAGETYPE}-initramfs${INITRAMFS_EXT_NAME}.p7b" 50101
fi
true
}
pkg_prerm_${PN}_append() {
if [ "${BUNDLE}" = "1" ] ; then
update-alternatives --remove "${KERNEL_IMAGETYPE}.p7b" \
"${KERNEL_IMAGETYPE}-initramfs${INITRAMFS_EXT_NAME}.p7b"
fi
true
}
@@ -0,0 +1,74 @@
SUMMARY = "Initramfs kernel boot"
DESCRIPTION = "This package includes the initramfs for the kernel boot. \
"
LICENSE = "MIT"
DEPENDS = "virtual/kernel"
PROVIDES = "virtual/kernel-initramfs"
ALLOW_EMPTY_${PN} = "1"
S = "${STAGING_KERNEL_DIR}"
B = "${WORKDIR}/${BPN}-${PV}"
inherit linux-kernel-base kernel-arch
INITRAMFS_BASE_NAME = "${KERNEL_IMAGETYPE}-initramfs-${PV}-${PR}-${MACHINE}-${DATETIME}"
INITRAMFS_BASE_NAME[vardepsexclude] = "DATETIME"
INITRAMFS_EXT_NAME = "-${@base_read_file('${STAGING_KERNEL_BUILDDIR}/kernel-abiversion')}"
BUNDLE = "${@'1' if d.getVar('INITRAMFS_IMAGE', True) and \
d.getVar('INITRAMFS_IMAGE_BUNDLE', True) == '1' \
else '0'}"
python() {
image = d.getVar('INITRAMFS_IMAGE', True)
if image:
d.appendVarFlag('do_install', 'depends', ' ${INITRAMFS_IMAGE}:do_rootfs')
}
do_unpack[depends] += "virtual/kernel:do_deploy"
do_populate_lic[depends] += "virtual/kernel:do_deploy"
do_install() {
[ -z "${INITRAMFS_IMAGE}" ] && exit 0
if [ "${BUNDLE}" = "0" ]; then
for suffix in cpio.gz cpio.lzo cpio.lzma cpio.xz; do
img="${DEPLOY_DIR_IMAGE}/${INITRAMFS_IMAGE}-${MACHINE}.$suffix"
if [ -s "$img" ]; then
install -d "${D}/boot"
install -m 0644 "$img" \
"${D}/boot/${INITRAMFS_IMAGE}${INITRAMFS_EXT_NAME}.$suffix"
break
fi
done
else
if [ -e "${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-initramfs-${MACHINE}.bin" ]; then
install -d "${D}/boot"
install -m 0644 "${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-initramfs-${MACHINE}.bin" \
"${D}/boot/${KERNEL_IMAGETYPE}-initramfs${INITRAMFS_EXT_NAME}"
fi
fi
}
pkg_postinst_${PN}() {
if [ "${BUNDLE}" = "1" ]; then
update-alternatives --install "/boot/${KERNEL_IMAGETYPE}" \
"${KERNEL_IMAGETYPE}" "/boot/${KERNEL_IMAGETYPE}-initramfs${INITRAMFS_EXT_NAME}" \
50101 || true
fi
}
pkg_prerm_${PN}() {
if [ "${BUNDLE}" = "1" ]; then
update-alternatives --remove "${KERNEL_IMAGETYPE}" \
"${KERNEL_IMAGETYPE}-initramfs${INITRAMFS_EXT_NAME}" || true
fi
}
PACKAGE_ARCH = "${MACHINE_ARCH}"
FILES_${PN} = "/boot/*"