summaryrefslogtreecommitdiffstats
path: root/meta/classes/kernel.bbclass
Commit message (Collapse)AuthorAgeFilesLines
* kernel: Fix depmod for multilibRichard Purdie2015-01-291-15/+11
| | | | | | | | | | | | Using populate_sysroot for this data was a nice idea but flawed as it doesn't work in multilib builds. Instead we can use PKGDATA_DIR since this is consistent over multilib builds. It also turns out to be slightly neater code too. Hopefully this resolves the problem once and for all. (From OE-Core rev: 6cccae3ca54c1177a1d91d23c3e151d74e735ee9) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel/image/depmodwrapper: Fixups for depmodRichard Purdie2015-01-231-3/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | With the rpm package backend enabled, running: bitbake <image> bitbake virtual/kernel -c clean bitbake <image> -c rootfs -f results in an image with incorrect kernel module dependency information. The problem is that the System.map and kernel-abiversion files are needed for depmod and after the recent kernel changes, these are no longer in sstate. Its reasonable to require the kernel to unpack/build if you're about to build a module against it. It is not reasonable to require this just to build a rootfs. Therefore stash the needed files specifically for depmod. Also fix some STAGING_KERNEL_DIR references which were incorrect, found whilst sorting through his change. (From OE-Core rev: b851504dcf5e147c9efb1c7b6a4d22c1a1a87cd7) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* fix '[[: not found' error message using dashVincent Génieux2015-01-231-1/+1
| | | | | | | | | | | | Remove bash specific syntax '[[ test ]]' replaced with '[ test ]'. Fixes [YOCTO #7112] (From OE-Core rev: f2ff849d5936d3dc5e24301e0620da265df50fea) Signed-off-by: Vincent Génieux <vincent2014@startigen.fr> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel.bbclass: Update cleandirs to remove new kernel staging dirsDarren Hart2015-01-161-1/+2
| | | | | | | | | | | | | | Fixes [YOCTO 6818] Update do_unpack[cleandirs] to include the STAGING_KERNEL_BUILDDIR, and add the same set of updated cleandirs for do_clean. (From OE-Core rev: 0726f8099c1407eea9e53a62be94defbab32265e) Signed-off-by: Darren Hart <dvhart@linux.intel.com> Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel: move source and build output to work-sharedBruce Ashfield2015-01-161-12/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | commit 3b3f7e785e279 [kernel: Rearrange for 1.8] began the process of moving the kernel source and build artefacts out of sstate control and into a shared location. This changed triggered some workflow issues, as well as bugs related to the kernel source containing build output, and hence being dirty and breaking kernel rebuilds. To solve these issues, and to make it clear that the kernel is not under sstate control, we move the source and build outputs to: work-shared/MACHINE/kernel-source work-shared/MACHINE/kernel-build-artifacts Where kernel-build-artifacts is the kernel build output and kernel-source is kept "pristine". The build-artifacts contain everything that is required to build external modules against the kernel source, and includes the defconfig, the kernel-abiversion, System.map files and output from "make scripts". External module builds should either pass O= on the command line, or set KBUILD_OUTPUT to point to the build-artifacts. module-base.bbclass takes care of setting KBUILD_OUTPUT, so most existing external module recipes are transparently adapted to the new source/build layout. recipes that depend on the kernel source must have a depedency on the do_shared_workdir task: do_configure[depends] += "virtual/kernel:do_shared_workdir" With this dependency added, the STAGING_KERNEL_DIR will be populated and available to the rest of the build. (From OE-Core rev: 6a1ff0e7eacef595738f2fed086986fd622ec32a) Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel.bbclass: When linux/version.h exists, copy itOtavio Salvador2015-01-161-0/+4
| | | | | | | | | | | | Old Linux kernel versions rely on linux/version.h for modules; this needs to be published for external modules to use. Copy it when available. (From OE-Core rev: 78226efe72c8221206594c70fa1d8742d4097af1) Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel.bbclass: fix do_unpack function when S ends with slashMartin Jansa2015-01-071-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * slash at the end causes os.symlink(kernsrc, s) to use s as directory name and fails with: ERROR: Error executing a python function in /OE/build/owpb/webos-ports/meta-smartphone/meta-samsung/recipes-kernel/linux/linux-samsung-tuna_git.bb: The stack trace of python calls that resulted in this exception/failure was: File: 'base_do_unpack', lineno: 26, function: <module> 0022: subprocess.call(d.expand("mv /OE/build/owpb/webos-ports/tmp-glibc/work/maguro-webos-linux-gnueabi/linux-samsung-tuna/3_3.0.72+gitrAUTOINC+f8ed73f94a-r12/git/ /OE/build/owpb/webos-ports/tmp-glibc/sysroots/maguro/usr/src/kernel"), shell=True) 0023: os.symlink(kernsrc, s) 0024: 0025: *** 0026:base_do_unpack(d) 0027: File: 'base_do_unpack', lineno: 23, function: base_do_unpack 0019: bb.utils.mkdirhier(kernsrc) 0020: bb.utils.remove(kernsrc, recurse=True) 0021: import subprocess 0022: subprocess.call(d.expand("mv /OE/build/owpb/webos-ports/tmp-glibc/work/maguro-webos-linux-gnueabi/linux-samsung-tuna/3_3.0.72+gitrAUTOINC+f8ed73f94a-r12/git/ /OE/build/owpb/webos-ports/tmp-glibc/sysroots/maguro/usr/src/kernel"), shell=True) *** 0023: os.symlink(kernsrc, s) 0024: 0025: 0026:base_do_unpack(d) 0027: Exception: OSError: [Errno 2] No such file or directory ERROR: Function failed: base_do_unpack ERROR: Logfile of failure stored in: /OE/build/owpb/webos-ports/tmp-glibc/work/maguro-webos-linux-gnueabi/linux-samsung-tuna/3_3.0.72+gitrAUTOINC+f8ed73f94a-r12/temp/log.do_unpack.17042 ERROR: Task 0 (/OE/build/owpb/webos-ports/meta-smartphone/meta-samsung/recipes-kernel/linux/linux-samsung-tuna_git.bb, do_unpack) failed with exit code '1' (From OE-Core rev: dba30c2395792b553b69ce0b44cc75ff2dbdb317) Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel: Fix non linux-yocto buildsRichard Purdie2014-12-211-4/+25
| | | | | | | | | | | | | | | | | | | | After the recent kernel changes, non linux-yocto builds stopped working properly for two reasons: a) ${S} was being reset to ${WORKDIR}/git for example and STAGING_KERNEL_DIR did not contain the source b) Most builds were using ${B} == ${S} This patch adds a fixup to the unpack function to handle the case where ${S} != ${STAGING_KERNEL_DIR} and also set up the infrastrcture so that B != S for kernel builds from now on. The kernel build system is one of the best for supporting this and there is no good reason not to take advantage of it. (From OE-Core rev: 106dab2fd0321e6b4e77b40111e59a3a31d329d4) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel: Clean ${S} before unpackRichard Purdie2014-12-211-0/+2
| | | | | | | | | | | | | | Currently unpack just forces sources over the current files. This change ensures ${S} is cleaned out before sources are unpacked. This resolves issues seen when upgrading to the new kernel class changes. Ultimately, this should probably move to base.bbclass but one step at a time, this solves an immediate problem blocking the other patches from merging. (From OE-Core rev: 7deb1f670c188c24744b7888a2d2f73c2a8ddff7) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel: fix out of tree module buildsBruce Ashfield2014-12-211-0/+23
| | | | | | | | | | | | | | With the kernel build optimizations, we no longer copy the source from the built kernel into the staging dir, since the kernel is unpacked and built directly from the staging dir. This means that a few build artifacts need to be restored to allow out of tree modules to once again build. (From OE-Core rev: 4b981e4fd5a4744d0d83053219274296e7785e77) Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel: Rearrange for 1.8Richard Purdie2014-12-211-88/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In 1.8 we want to streamline the kernel build process. Basically we currently have multiple copies of the kernel source floating around and the copying/compression/decompression is painful. Lets assume we have a kernel source per machine since in most cases this is true (and we have a sysroot per machine anyway). Basically, instead of extracting a source into WORKDIR, then copying to a sysroot, we now set S to point straight at STAGING_DIR_KERNEL. Anything using kernel source can then just point at it and use: do_configure[depends] += "virtual/kernel:do_patch" to depend on the kernel source being present. Note this is different behaviour to DEPENDS += "virtual/kernel" which equates to do_configure[depends] += "virtual/kernel:do_populate_sysroot". Once we do this, we no longer need the copy operation in do_populate_sysroot, in fact there is nothing to do there (yay). The remaining part of the challenge is to kill off the horrible do_install. This patch splits it off to a different class, the idea here is to have a separate recipe which depends on the virtual/kernel:do_patch and just installs and packages the source needed to build modules on target into a specific package. Right now this code is proof of concept. It builds kernels and kernel modules. perf blows up in do_package with issues on finding the kernel version which can probably be fixed by adding back the right bit of do_install, and adding a dependency of do_package[depends] += "virtual/kernel:do_install" to perf. The whole thing needs a good write up, the corner cases testing and probably a good dose of cleanup to the remaining code. (From OE-Core rev: 3b3f7e785e27990ba21bc7cd97289c826a9a95d1) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel.bbclass: Remove bashismKhem Raj2014-12-191-1/+1
| | | | | | | | | | | | | | | | | Fixes build on systems using dash for default shell e.g. errors like run.do_strip.25842: [[: not found | readelf: Error: Unable to read in 0x37 bytes of section headers | readelf: Error: Not an ELF file - it has the wrong magic bytes at the start Change-Id: I29cac15be44a02d75a3d6889b6ae9b2e19bf46af (From OE-Core rev: 6956ffdc6e9879e32360b6ee3a3d286618807485) Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel.bbclass: Create modules directory even if there is no modules installedHe Zhe2014-10-241-0/+1
| | | | | | | | | | | | | | | During kernel_do_install it needs to make symbol link at ${D}/lib/modules/${KERNEL_VERSION}/build, but there will not be ${D}/lib/modules/${KERNEL_VERSION} if there is no modules installed for current image, which will result in a build failure. Add "mkdir -p ${D}/lib/modules/${KERNEL_VERSION}" here to avoid this failure and the need of similar changes in other scripts that also expect it to exist. (From OE-Core rev: f2f72f8ff623d24fffbb1b0ad40bc08f05ff31dd) Signed-off-by: He Zhe <zhe.he@windriver.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel.bbclass: enable a link for external module buildingNitin A Kamble2014-10-061-1/+2
| | | | | | | | | | | | | | | | | | Even though the kernel-dev package provides the required support for building external kernel modules on the target, some commonly used scripts and utilities fail as they are not finding the kernel module build support files at the desired location. Create the /lib/modules/<kernel-version>/build link on target pointing to the sources provided by the kernel-dev package, to fix the issue. Fixes Bug: [YOCTO #2968] (From OE-Core rev: aafa4bc896eb944aa4fc406807dd7e02f4b9b7ba) Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel: Added bc-native as DEPENDSAlejandro Hernandez2014-10-061-1/+1
| | | | | | | | | | | The makefile checks for bc during for compilation [YOCTO #6781] (From OE-Core rev: c067e52cffe002de3b39aa1bced308dd532859c1) Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel.bbclass: use one package split for all firmware filename extensionsCarlos Rafael Giani2014-09-221-4/+1
| | | | | | | (From OE-Core rev: dd5313228879487ca2b11fc5d38fb821a2a810a5) Signed-off-by: Carlos Rafael Giani <dv@pseudoterminal.org> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel.bbclass: handle .dsp firmwareCarlos Rafael Giani2014-09-101-0/+1
| | | | | | | | | | | A few firmware files use this filename extension, like korg/k1212.dsp . Create respective packages. (From OE-Core rev: 4a4877c2e7cdcb8a1d0a54add600c0cd4e92e647) Signed-off-by: Carlos Rafael Giani <dv@pseudoterminal.org> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* sanity.bbclass/kernel.bbclass: minor fixesRobert Yang2014-08-231-1/+1
| | | | | | | | | | | | | Fixed: - Remove an unused line - Remove unneeded code after d.getVar(), we don't need the "or ''" after d.getVar() unless we need a string. - typo: PREMIRROS -> PREMIRRORS. (From OE-Core rev: 7849e50107a27b0ff2aaac47480ac1a0a79533dc) Signed-off-by: Robert Yang <liezhi.yang@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel: Prevent from installing so files into source dirYang Shi2014-08-231-1/+1
| | | | | | | | | | | | | | vdso build could generate so files, avoid installing such so files into kernel source dir, otherwise the below package QA error might be hit: ERROR: QA Issue: File '/usr/src/kernel/arch/x86/vdso/vdso64.so' from linux-yocto was already stripped, this will prevent future debugging! [already-stripped] (From OE-Core rev: daff14bf44c59542c8b8f1a455dcc59586be7e59) Signed-off-by: Yang Shi <yang.shi@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel: don't copy .so.dbg files into kernel source installBruce Ashfield2014-07-251-1/+1
| | | | | | | | | | | | | | | In 3.16+ x86-64 kernel builds produce a vdso64.so.dbg file. If this file is copied into the kernel source install multiple QA failures are triggered. Specifically, this file triggers a debug package split that results in files installed but not shipped, and invalid .debug file errors. By ensuring that .so files are not copied, we avoid this incorrect split with no impact on future build phases. (From OE-Core rev: f1f6d153de9dc675b4bf4020799b2365b1b62ec7) Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel.bbclass: update KERNEL_IMAGE_MAXSIZERobert Yang2014-07-101-3/+6
| | | | | | | | | | | | | | | * Make KERNEL_IMAGE_MAXSIZE and IMAGE_ROOTFS_SIZE have the same algorithm: - Use Kbytes as the unit since we use this in other codes. - Use "du" rather than "ls" to figure out the size since we use this in image.py. [YOCTO #2610] (From OE-Core rev: 7384d2831c713ac5999aca83c312154dc15cec56) Signed-off-by: Robert Yang <liezhi.yang@windriver.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* classes/kernel: Use full path for symlink in update-alternatives.Drew Moseley2014-06-291-1/+1
| | | | | | | | | | | | Use a fully qualified path for the <path> parameter in calls to update-alternatives. The chkconfig-alternatives version requires a full path and without it, the symlink is not properly created. (From OE-Core rev: 78ee4d8b1782445caecce8331e68efe83fc32044) Signed-off-by: Drew Moseley <drew_moseley@mentor.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel: don't populate source symbolic linkMing Liu2014-04-251-1/+1
| | | | | | | | | | | | | | | /usr/src/kernel/source deployed by kernel-dev package is symbolically linking to a build-time kernel source folder, which make no sense when cross-compiling. Fixed by not populating it at install stage. (From OE-Core rev: edb85a9589be54a1e9c980aa669a380222a76cf4) Signed-off-by: Ming Liu <ming.liu@windriver.com> Signed-off-by: Kai Kang <kai.kang@windriver.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* classes/kernel: move module postinst commands to kernel-basePaul Eggleton2014-03-221-2/+5
| | | | | | | | | | | | | Since kernel-base is the package that contains the files that depmod needs to run, we should be running depmod from the kernel-base postinstall rather than kernel-image. Fixes [YOCTO #5392]. (From OE-Core rev: f7d2cb383281ec8dfa90950ba04d87dd29ffc676) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel.bbclass, base.bbclass: Fix support for old kernel configurationOtavio Salvador2014-02-131-1/+1
| | | | | | | | | | | | | | | | | | | | This solves a regression introduced by OE-Core:9b75f6a (kernel: use oldnoconfig before yes '' | make oldconfig). The original oe_runmake explicitly calls 'die' command in case of failure so the fallback code never runs. The fallback code needs to handle the oe_runmake return code to call the backward compatible callback so we introduced a new command called oe_runmake_call which is used by oe_runmake. This does not change the functional behaviour of oe_runmake so it avoids any change except for the code which does need to handle the oe_runmake exit code. (From OE-Core rev: 51707282fc2c5a74588b2d79b2229513a883924f) Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel: use oldnoconfig before yes '' | make oldconfigAlexandre Belloni2014-02-111-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When using a defconfig, using yes '' | make oldconfig may not result in the correct configuration being set. For example: $ ARCH=mips make qi_lb60_defconfig # # configuration written to .config # $ grep USB_ETH .config CONFIG_USB_ETH=y # CONFIG_USB_ETH_RNDIS is not set # CONFIG_USB_ETH_EEM is not set $ cp arch/mips/configs/qi_lb60_defconfig .config $ yes '' | make ARCH=mips oldconfig [...] $ grep USB_ETH .config CONFIG_USB_ETH=m # CONFIG_USB_ETH_RNDIS is not set # CONFIG_USB_ETH_EEM is not set Using make olddefconfig solves that but we'll use the oldnoconfig alias for backward compatibility with older kernels. $ cp arch/mips/configs/qi_lb60_defconfig .config $ make ARCH=mips oldnoconfig scripts/kconfig/conf --olddefconfig Kconfig # # configuration written to .config # $ grep USB_ETH .config CONFIG_USB_ETH=y # CONFIG_USB_ETH_RNDIS is not set # CONFIG_USB_ETH_EEM is not set (From OE-Core rev: 9b75f6a5786ff7b2e6219d78b38f0032f100c660) Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel: stop using -exec rm for deleting filesBruce Ashfield2014-02-111-3/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Removing files from the source tree via find, exec and rm is not the most efficient operation, due to (among other things) the many forked processes. If we use -delete, it saves a significant amount of time. But -delete does not work with -prune (since it forces -depth). To maintain the lib, tools and scripts source files, we can hide them temporarily, skip their hidden directories and then finally restore them. Time for install before this change: real 2m48.563s user 0m35.220s sys 0m33.036s Time for install after this change: real 1m21.301s user 0m33.160s sys 0m28.388s We could further speed this up by using inline perl to delete the files, but that complexity is avoided for now. (From OE-Core rev: 01932d6bbc71e86fd903097b5339e91f76846388) Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel.bbclass: Fix empty modules directory QA issueNathan Rossi2014-02-021-0/+2
| | | | | | | | | | | | | | | | | | | | | If a kernel is built without any external modules (aka no CONFIG_*=m), then during a modules_install of the kernel an empty directory is created at /lib/modules/${KERNEL_VERIONS}/kernel. This is behaviour of the kernel infrastructure, the directory would normally be populated with the modules that were built. However because of the expectations of kernel-modules-split, no packages are created when there are no modules and an empty directory lingers. This raises QA issues as warning or errors (depending on the distro). The following patch changes the kernel_do_install task to check if the directory is empty and if so removes it. (From OE-Core rev: 63d3070b7e1207164891b154a5b9017731e75872) Signed-off-by: Nathan Rossi <nathan.rossi@xilinx.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel.bbclass: add support for LZ4 initramfs filesKoen Kooi2014-01-141-1/+6
| | | | | | | (From OE-Core rev: 4cf53999459f3984f541ad5e666057a6727a066c) Signed-off-by: Koen Kooi <koen.kooi@linaro.org> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* classes/module_strip: removePaul Eggleton2013-12-121-1/+1
| | | | | | | | | | | This class has been empty since 2010, so we shouldn't need it anymore. A check of common layers suggests there shouldn't be any references to it outside of OE-Core. (From OE-Core rev: 3c4557df95e3c60ef938c53f00bb1d7f765fe0ef) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* Revert "kernel: restore scripts in the sysroot"Richard Purdie2013-11-291-11/+0
| | | | | | | | | | | | This reverts commit 6a6735cb98d529c8c5376aedb5c951339f54fe96. The module class already ensures the scripts are rebuilt correctly. Running this at sstate installation time is problematic since it can require the cross compiler. Adding such a dependency would cause issues of its own. (From OE-Core rev: b2c948d56241ff7cdea2e9e68b740f305c72f5ca) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel.bbclass: Stop bundle_initramfs thwarting sstate cache and fix raceMike Crowe2013-11-241-12/+12
| | | | | | | | | | | | | | | | | | | | | | | | The new do_bundle_initramfs task introduced in 609d5a9ab9e58bb1c2bcc2145399fbc8b701b85a defeats using the sstate cache. The kernel is resurrected from the sstate cache but ends up being built again since do_bundle_initramfs depends on do_compile. The task is no longer nostamp to avoid causing unnecessary rebuilds. The sstate checksum stamps should know when to rebuild. The task now runs before do_deploy and part of the work has been moved to do_deploy where it now writes to ${DEPLOYDIR} rather than ${DEPLOY_DIR_IMAGE} so that the files end up in sstate. The task can also race against do_install since both call into the kernel build system. This is fixed by making do_bundle_initramfs run after do_install (which therefore also fixes the problem that 3baa63b4d588c3262254528b406ede265dd117bf was addressing.) (From OE-Core rev: 55989cb509340bd265d0ce0d8bfe849681be4616) Signed-off-by: Mike Crowe <mac@mcrowe.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* Revert "kernel.bbclass: move bundle_initramfs after kernel_link_vmlinux"Mike Crowe2013-11-241-1/+1
| | | | | | | | | | This reverts commit 3baa63b4d588c3262254528b406ede265dd117bf. It broke builds that aren't using kernel-yocto. (From OE-Core rev: 81831db1c32afa3346f3ed9f4325ad280e5bb005) Signed-off-by: Mike Crowe <mac@mcrowe.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel.bbclass: move bundle_initramfs after kernel_link_vmlinuxMing Liu2013-11-201-1/+1
| | | | | | | | | | | | ${KERNEL_OUTPUT} is being renamed/restored in bundle_initramfs task, so we must ensure bundle_initramfs run after kernel_link_vmlinux where the link of vmlinux is created as the bootable image. (From OE-Core rev: 3baa63b4d588c3262254528b406ede265dd117bf) Signed-off-by: Ming Liu <ming.liu@windriver.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel.bbclass: Use lzma not lzmash for decompressingPhil Blundell2013-11-201-1/+1
| | | | | | | | | | | | | | | If kernel_do_compile() encounters a .lzma image for the initramfs, it attempts to decompress it using the little-known "lzmash" utility. This may not be present, which will cause the build to fail. Fortunately, it appears that the more mainstream "lzma" tool is compatible so we can use that one instead. (From OE-Core rev: f7a04cbdee67675ff6a8787709f3a312dc25bfec) Signed-off-by: Phil Blundell <philb@gnu.org> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel.bbclass: fix hardlink testBruce Ashfield2013-11-161-1/+1
| | | | | | | | | | | | | The commit [kernel.bbclass: test for hardlinks before installing] doesn't work on all build machines without a space between the ! and the test for hardlink equivalance. The build continues, while the test fails and no copy is made into the sysroot. Eventually tasks like build_hdimg will fail with the missing kernel with the root cause being less than obvious. (From OE-Core rev: 0704648e9dfd2897f6f54773a0e7d2762117970c) Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel.bbclass: test for hardlinks before installingBruce Ashfield2013-11-151-1/+5
| | | | | | | | | | | | | | | | | commit df564c4 [kernel: Use hardlinks for do_populate_sysroot for speed] does indeed speed up the build, but it also means that the KERNEL_OUPUT and KERNEL_IMAGETYPE may be hardlinks. If they are hardlinks, install complains that they are actually the same file and stops the build. We can easily test and avoid the copy if the file is already in place. [YOCTO #5527] (From OE-Core rev: 6a3b3e501c66733216ac43d3f020cfdb512dd640) Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel: Use hardlinks for do_populate_sysroot for speedRichard Purdie2013-11-121-2/+2
| | | | | | | | | | | | | | | | The kernel tree is large and doesn't need to be copied. Override the default sysroot handling function to use a hardlink copying function in python. This commit also drops the copying of the /lib directory which just contains the kernel modules. We never use those in the sysroot so there is little point in carrying those around. For linux-yocto this takes the do_populate_sysroot time 24s -> 14s. (From OE-Core rev: 13259459e200a237ca486cbe1123a0b0a4d1eebf) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel: Use hardlinks during do_install for speedRichard Purdie2013-11-121-9/+9
| | | | | | | | | | | | | | | | | | | | Whilst the comment says we can't do this, its incorrect, install operates on WORKDIR and its hard for different parts of WORKDIR to be on different filesystems. Hardlinking instead of copying is therefore a nice performance gain. Also, completely skip the Documentation directory (adding a dummy Makefile to keep make happy) and tweak the other cp commands to link since if we don't we'd get "this is the same file" type errors from cp for some kernel versions. For do_install on linux-yocto, this takes it from 227s -> 84s. (From OE-Core rev: 0727e510f8533216518563b1533e804a1dc44402) (From OE-Core rev: f6e98af6b9f6729bb61f17e3b4203c3c79829205) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel.bbclass: Delay rm_work to run after do_bundle_initramfsXufeng Zhang2013-11-051-1/+1
| | | | | | | | | | | | | | | | | | | | Since kernel will build twice when we are trying to bundle kernel and initramfs together after commit 609d5a9ab("kernel.bbclass, image.bbclass: Implement kernel INITRAMFS dependency and bundling"), thus, the second building for kernel would fail if rm_work is done previously. To fix this problem, we need to make do_bundle_initramfs task run before do_rm_work task. [YOCTO #5416] (From OE-Core rev: 8308e22a44a2dea7d1bbfb429b9df9c63714a649) Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> Signed-off-by: Xufeng Zhang <xufeng.zhang@windriver.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel: restore scripts in the sysrootBruce Ashfield2013-10-141-0/+11
| | | | | | | | | | | | | | | | When building against the sysroot, out of tree modules can require modpost and other utilities normally found in the kernel's scripts directory. For the kernel source in the staging dir, these scripts have been removed to avoid mixing archiectures when packaging kernel-dev (among other things). Rather than further complicate the kernel's install rule, or its packaging, we can restore the scripts by building them in the kernel staging directory after the sstate is installed, making them available to packages that need them. (From OE-Core rev: 5bcd65807aa634060f98928db6011856934dabe4) Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel.bbclass: unset LDFLAGS when run devshell in kernel recipeNobuhiro Iwamatsu2013-10-141-0/+5
| | | | | | | | | | | | | | | | | | | When user runs devshell in kernel recipe and compiles kernel, this will fail by unrecognized option of LD. ---- $ make ... arm-poky-linux-gnueabi-ld: unrecognized option '-Wl,-O1' arm-poky-linux-gnueabi-ld: use the --help option for usage information ---- This set to empty LDFLAGS when user runs the devshell, and solve this problem. (From OE-Core rev: e36ac3ab3a7fe02c7eeb3998ff33c001ab795841) Signed-off-by: Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel.bbclass: Allow INITRAMFS_TASK to trigger copy initramfs codeJason Wessel2013-09-301-0/+8
| | | | | | | | | | | | | | | | | | | | Activating the INITRAMFS_TASK can cause circular dependencies, but that is up to the end user to resolve in recipes. The INITRAMFS_TASK should also trigger immediate linking of the cpio task in the first compile pass. This was a subtle regression introduced by: 609d5a9ab (kernel.bbclass, image.bbclass: Implement kernel INITRAMFS dependency and bundling). This patch restores the previous behavior and only affects the INITRAMFS_TASK which is not set by any of the default build profiles in oe-core. Reviewed-by: Andrea Adami <andrea.adami@gmail.com> (From OE-Core rev: 36faac868e086e9c23537b107cdd973d7fd980bd) Signed-off-by: Jason Wessel <jason.wessel@windriver.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel.bbclass, image.bbclass: Implement kernel INITRAMFS dependency and ↵Jason Wessel2013-09-061-12/+84
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | bundling This patch aims to fix the following two cases for the INITRAMFS generation. 1) Allow an image recipe to specify a paired INITRAMFS recipe such as core-image-minimal-initramfs. This allows building a base image which always generates the needed initramfs image in one step 2) Allow building a single binary which contains a kernel and the initramfs. A key requirement of the initramfs is to be able to add kernel modules. The current implementation of the INITRAMFS_IMAGE variable has a circular dependency when using kernel modules in the initramfs image.bb file that is caused by kernel.bbclass trying to build the initramfs before the kernel's do_install rule. The solution for this problem is to have the kernel's do_bundle_initramfs_image task depend on the do_rootfs from the INITRAMFS_IMAGE and not some intermediate point. The image.bbclass will also sets up dependencies to make the initramfs creation task run last. The code to bundle the kernel and initramfs together has been added. At a high level, all it is doing is invoking a second compilation of the kernel but changing the value of CONFIG_INITRAMFS_SOURCE to point to the generated initramfs from the image recipe. [YOCTO #4072] (From OE-Core rev: 609d5a9ab9e58bb1c2bcc2145399fbc8b701b85a) Signed-off-by: Jason Wessel <jason.wessel@windriver.com> Acked-by: Bruce Ashfield <bruce.ashfield@windriver.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel.bbclass: Correct post(inst|rm) package associationDarren Hart2013-08-131-16/+13
| | | | | | | | | | | | | | | | Fixes [YOCTO #4991] The kernel image is installed as part of the kernel-image package, but the symlink creation/removal via alternatives is being done in pkg_post(inst|rm)_kernel-base. Move the postinst alternatives logic into the kernel-image functions. (From OE-Core rev: 35f538b117e3387354d2dab1f22c3de28ab1322b) Signed-off-by: Darren Hart <dvhart@linux.intel.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel.bbclass: fix typoJavier Viguera2013-08-061-1/+1
| | | | | | | | (From OE-Core rev: 8e8ea9294078526a4bb3ade54482cf4d2213b497) Signed-off-by: Javier Viguera <javier.viguera@digi.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel.bbclass: Fix link for modules-${MACHINE}.tgzYi Zhao2013-06-071-1/+1
| | | | | | | | | | | | | | The modules-${MACHINE}.tgz should link to ${MODULE_TARBALL_BASE_NAME}. But now it links to an invalid file ${MODULE_TARBALL_BASE_NAME}.bin. Remove the extra .bin suffix. [YOCTO #4595] (From OE-Core rev: ef9fad8fff1c413bc0eab15625f051d4e2d0a201) Signed-off-by: Yi Zhao <yi.zhao@windriver.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel: Remove unnecessary cd and rm, fix MODULE_TARBALL_SYMLINK_NAME creationMartin Jansa2013-05-241-6/+3
| | | | | | | | | | | | * DEPLOYDIR is used as target for every other file deployed by do_deploy, this was just unnecessary switching CWD to create relative symlink and I have no idea why rm -f was used together with ln -sf. (From OE-Core rev: 8375782a295c6294ea4ab889c309bebf873f3489) Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel.bbclass: Add dependency on binutilsMike Crowe2013-05-241-1/+1
| | | | | | | | | | | | | | | | | | Compiling the Linux kernel requires binutils; kernel.bbclass uses INHIBIT_DEFAULT_DEPS so it had better depend on binutils explicitly. (The lack of this dependency isn't always a problem because binutils is required to build gcc-cross but if gcc-cross is reconstructed from the sstate cache then gcc-cross's dependency on binutils-cross is ignored due to being in the safe dependency list in setscene_depvalid.) (From OE-Core rev: 37beb7bdab78de5253a894f35afafa34c13a00f5) Signed-off-by: Mike Crowe <mac@mcrowe.com> Acked-by: Phil Blundell <philb@gnu.org> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel.bbclass: make FILES package-specificTom Zanussi2013-05-101-1/+1
| | | | | | | | | | | | Fix QA warnings seen when using 'traditional' kernel recipes e.g.: WARNING: QA Issue: .../recipes-kernel/linux/linux_3.0.18.bb: Variable FILES is set as not being package specific, please fix this. (From OE-Core rev: 799c16ed317aed7638e264ee2f92e4b722f1b011) Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>