# # old_revision [2c5004d72a3f70fdae1b53fd5cfe6b9ba04648c1] # # add_file "packages/initrdscripts/initramfs-kernel_1.0.bb" # content [4a43b26516dc0c6eab995d35f20b6e8d30777ebe] # ============================================================ --- packages/initrdscripts/initramfs-kernel_1.0.bb 4a43b26516dc0c6eab995d35f20b6e8d30777ebe +++ packages/initrdscripts/initramfs-kernel_1.0.bb 4a43b26516dc0c6eab995d35f20b6e8d30777ebe @@ -0,0 +1,28 @@ +DESCRIPTION = "Meta package for packaging an initramfsed kernel" + + +PACKAGE_ARCH = "${MACHINE_ARCH}" +PACKAGES="initramfs-kernel-image" +KERNEL_VERSION = "${@base_read_file('${STAGING_KERNEL_DIR}/kernel-abiversion')}" +KERNELPV = "${@base_read_file('${STAGING_KERNEL_DIR}/kernel.pv')}" +KERNELPR = "${@base_read_file('${STAGING_KERNEL_DIR}/kernel.pr')}" + +PKG_initramfs-kernel-image = "initramfs-kernel-image-${KERNEL_VERSION}" +PV_initramfs-kernel-image = "${KERNELPV}" +PR_initramfs-kernel-image = "${KERNELPR}" + +FILES_initramfs-kernel-image = "/boot/${KERNEL_IMAGETYPE}-${MACHINE}-initramfs.bin" +KERNEL_IMAGETYPE ?= "zImage" + +do_install () { + if [ -z "${INITRAMFS_IMAGE}" ]; then + oewarn "INITRAMS_IMAGE not set. If you want to generate a kernel with build in initramfs, set it to the desired initramfs-image, rebuild virtual/kernel and this package" + else + install -d ${D}/boot + install ${STAGING_KERNEL_DIR}/${KERNEL_IMAGETYPE}-${MACHINE}-initramfs.bin ${D}/boot + fi +} + +do_install[depends] = "virtual/kernel:do_builtin_initramfs" +#do_install[nostamp] = "1" + # # old_revision [2c5004d72a3f70fdae1b53fd5cfe6b9ba04648c1] # # patch "classes/kernel.bbclass" # from [34b802297a875fd3c77c50d0aac3270b57374764] # to [e0534f61dcfe5e4cf312be2e79ef0eeb4debe687] # ============================================================ --- classes/kernel.bbclass 34b802297a875fd3c77c50d0aac3270b57374764 +++ classes/kernel.bbclass e0534f61dcfe5e4cf312be2e79ef0eeb4debe687 @@ -65,22 +65,40 @@ kernel_do_compile() { fi } -INITRAMFS_SYMLINK_NAME ?= "initramfs-${MACHINE}" -INITRAMFS_IMAGE_TARGET ?= "initramfs-image" +do_builtin_initramfs() { + if [ ! -z "${INITRAMFS_IMAGE}" ]; then + unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS MACHINE + cp "${DEPLOY_DIR_IMAGE}/${INITRAMFS_IMAGE}-${MACHINE}.cpio.gz" usr/initramfs_data.cpio.gz + #there seem to be broken cp binarys out there + touch usr/initramfs_data.cpio.gz + oe_runmake ${KERNEL_IMAGETYPE} CC="${KERNEL_CC}" LD="${KERNEL_LD}" + install -m 0644 "${KERNEL_OUTPUT}" "${DEPLOY_DIR_IMAGE}/initramfs-${KERNEL_DEPLOY_NAME}" + install -d "${STAGING_KERNEL_DIR}" + install -m 0644 "${KERNEL_OUTPUT}" "${STAGING_KERNEL_DIR}/${KERNEL_IMAGETYPE}-${MACHINE}-initramfs.bin" + echo "${PV}" > "${STAGING_KERNEL_DIR}/kernel.pv" + echo "${PR}" > "${STAGING_KERNEL_DIR}/kernel.pr" + # Make sure to kill injected initramfs, in case someone will do "-c compile -f" + rm usr/initramfs_data.cpio.gz -do_builtin_initramfs() { - unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS MACHINE - cp "${DEPLOY_DIR_IMAGE}/${INITRAMFS_SYMLINK_NAME}" usr/initramfs_data.cpio.gz - oe_runmake ${KERNEL_IMAGETYPE} CC="${KERNEL_CC}" LD="${KERNEL_LD}" - install -d ${DEPLOY_DIR_IMAGE} - install -m 0644 ${KERNEL_OUTPUT} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_BASE_NAME}-initramfs.bin - # Make sure to kill injected initramfs, in case someone will do "-c compile -f" - rm usr/initramfs_data.cpio.gz + cd "${DEPLOY_DIR_IMAGE}" + ln -sf "initramfs-${KERNEL_DEPLOY_NAME}" "initramfs-${KERNEL_SYMLINK_NAME}" + cd - + fi } -addtask builtin_initramfs after do_compile -do_builtin_initramfs[nostamp] = "1" -do_builtin_initramfs[depends] = "${INITRAMFS_IMAGE_TARGET}:do_rootfs" +python () { + import bb + if bb.data.getVar('INITRAMFS_IMAGE', d, True) != '': + bb.data.setVar('INITRAMFS_TASK', '${INITRAMFS_IMAGE}:do_rootfs', d) + bb.data.setVar('INITRAMFS_PACKAGE_TASK_BUILD', 'initramfs-kernel:do_build', d) + bb.data.setVar('INITRAMFS_PACKAGE_TASK_CLEAN', 'initramfs-kernel:do_clean', d) +} +#for use in initramfs-kernel.bb +do_builtin_initramfs[depends] = "${INITRAMFS_TASK}" +do_build[depends] += "${INITRAMFS_PACKAGE_TASK_BUILD}" +do_clean[depends] += "${INITRAMFS_PACKAGE_TASK_CLEAN}" +addtask builtin_initramfs before do_build after do_package_write + kernel_do_stage() { ASMDIR=`readlink include/asm` @@ -448,3 +466,20 @@ addtask sizecheck before do_install afte } addtask sizecheck before do_install after do_compile + +KERNEL_CUSTOM_NAME ?= "" +KERNEL_DEPLOY_NAME ?= "${KERNEL_IMAGETYPE}-${PV}-${KERNEL_CUSTOM_NAME}${MACHINE}-${DATETIME}.bin" +KERNEL_SYMLINK_NAME ?= "${KERNEL_IMAGETYPE}-${KERNEL_CUSTOM_NAME}${MACHINE}.bin" + +do_deploy() { + install -d ${DEPLOY_DIR_IMAGE} + install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_DEPLOY_NAME} + cd ${DEPLOY_DIR_IMAGE} + ln -sf ${KERNEL_DEPLOY_NAME} ${KERNEL_SYMLINK_NAME} + tar -cvzf ${DEPLOY_DIR_IMAGE}/modules-${KERNEL_VERSION}-${MACHINE}.tgz -C ${D} lib +} + +do_deploy[dirs] = "${S}" + +addtask deploy before do_build after do_install +