summaryrefslogtreecommitdiffstats
path: root/meta/classes-recipe/kernel.bbclass
Commit message (Collapse)AuthorAgeFilesLines
* kernel: don't force PAHOLE=falseBruce Ashfield2023-06-011-1/+1
| | | | | | | | | | | | | | | | | If a specific kernel provider or configuration wants to enable BTF and pahole analysis, it isn't currently possible due to the explicit definition to false in the base kernel build arguments. pahole is now detected by the kernel built itself, so unless pahole-native is enabled, the result is the same. If a kernel does require an explicit disable of pahole, it is better to carry PAHOLE=false in those specific recipes. (From OE-Core rev: b1e4851a36ed47ce6ba880a49264b9a57c78cf4f) Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel.bbclass: introduce KERNEL_LOCALVERSIONMing Liu2023-06-011-1/+5
| | | | | | | | | | | | Just like UBOOT_LOCALVERSION, an end user can set KERNEL_LOCALVERSION to append a string to the name of the local version of the kernel image. (From OE-Core rev: 229435a52f36ddec5f85fb6d5ccd42044b688397) Signed-off-by: Ming Liu <liu.ming50@gmail.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel-devicetree: make shell scripts posix compliantMartin Jansa2023-05-221-1/+1
| | | | | | | | | | | | | | | | Use the notation suggested by Martin Jansa to avoid a bashism. Also switch KERNEL_DTBVENDORED to the more common 0/1 notation instead of true/false. Fixes: 04ab57d200 (kernel-devicetree: allow specification of dtb directory, 2023-05-02) (From OE-Core rev: dd5a5abc9d88c3bc8ff2c52b042600f00f054015) Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> Signed-off-by: Randolph Sapp <rs@ti.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel-devicetree: allow specification of dtb directoryRandolph Sapp2023-05-051-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | Fedora/Redhat and Arch are somewhat standardized on their dtb directory structure. Let's add some flags to configure yocto to mimic that behavior. Add the following variables to the kernel class: - KERNEL_DTBDEST (controls the destination directory for dtbs) - KERNEL_DTBVENDORED (controls if vendor subdirectories are to be respected) Currently KERNEL_DTBDEST is expected to be a subdir of KERNEL_IMAGEDEST and KERNEL_DTBVENDORED is expected to be "true"/"false". This only applies to the package directory structure. The deploydir structure is purposely left untouched for compatibility with existing recipes. By default this is configured to behave the same as the current recipe and produce a flat dtb directory at KERNEL_IMAGEDEST. (From OE-Core rev: 04ab57d20009d85eb566e83ae6fe1dcea4db7300) Signed-off-by: Randolph Sapp <rs@ti.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel: improve initramfs bundle processing timeBruce Ashfield2023-04-201-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a partial fix for bugzilla 15059 [https://bugzilla.yoctoproject.org/show_bug.cgi?id=15059] It has been noted by several people that when an initramfs is bundled: - a lot of the kernel is rebuilt - it takes a really long time When looking at the logs, the second kernel compilation (that performs the bundle) is not using the parallel make settings, and builds with -j1. We are already explicitly passing PARALLEL_MAKE when building kernel modules, and by extending that explicit use to the main kernel compilation, we ensure that we always get a parallel build. Build times chnaged from more than 30 minutes for the bundle, to 3 minutes in local testing. The question of whether or not too much is rebuilding during the bundle step is still an open question, but with this tweak, at least the build time is back in the realm of acceptable. (From OE-Core rev: 88fd394ecf0f2174b792075d409d87046896426b) Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com> Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* image-artifact-names.bbclass: add INITRAMFS_IMAGE_NAME from kernel.bbclassMartin Jansa2023-03-221-1/+0
| | | | | | | | | | | | | | | | | | * move it from kernel.bbclass, because it needs to stay in sync with IMAGE_LINK_NAME structure * image-artifact-names.bbclass is also inheritted from kernel-artifact-names.bbclass so every recipe which needs this variable probably already inherits one of these * fixes kernel-fitimage.bbclass with modified IMAGE_LINK_NAME [YOCTO #12937] (From OE-Core rev: 432d0df0d771c8f0bef1e855ac6b0011b2c3cad2) Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* linux: inherit pkgconfig in kernel.bbclassMing Liu2023-03-061-1/+1
| | | | | | | | | | | | pkgconfig is being required to find dependencies for building kernel native tools, move "inherit pkgconfig" to kernel.bbclass so BSP kernel recipes can also benefit from it. (From OE-Core rev: 8a84bd98e3fbc16c782f83064801e469d086911e) Signed-off-by: Ming Liu <liu.ming50@gmail.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel: Add kernel specific OBJDUMPKhem Raj2023-03-011-1/+1
| | | | | | | | | | | | | | | | | | | | This helps in switching toolchains cleanly for kernel build between gcc and clang Currently, some kernels allow building with clang but not all the distro might use clang as default system compiler but kernel may demand gcc which is provided via KERNEL_* variables, however kernel does use OBJCOPY at places during build and it maybe set to use llvm objcopy when using clang. That should be a deliberate setting when clang is used for kernel as well, otherwise it should use binutils provided objcopy (From OE-Core rev: 17b409f2fd97894e0943d13c2cb0d52abde647e3) Signed-off-by: Khem Raj <raj.khem@gmail.com> Cc: Bruce Ashfield <bruce.ashfield@gmail.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel/linux-kernel-base: Fix kernel build artefact determinism issuesRichard Purdie2023-01-261-3/+0
| | | | | | | | | | | | | With the 6.1 kernel we've seen reproducibility/determinism issues where the kernel seems to rebuild headers referencing the hostname or local user. kernel-devsrc building after the kernel seemed to trigger it in some cases. Moving the definitions to the bbclass used by all the kernel recipe code including kernel-devsrc seems to be the best way to ensure this doesn't happen. (From OE-Core rev: 60681baa97daf4f3856453c34d6be08b6771a81b) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* recipes, classes: Avoid adding extra whitespace to PACKAGESPLITFUNCSPeter Kjellerstedt2023-01-121-1/+1
| | | | | | | | | | | | This is a follow-up to commit 846ff49465 to remove the extra whitespace that is no longer needed after converting :append and :prepend to += and =+. (From OE-Core rev: 5a38be49e451c9f9d973b10a33c3972507f7b18a) Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* recipes/classes: Drop prepend/append usage with PACKAGESPLITFUNCSRichard Purdie2023-01-051-1/+1
| | | | | | | | | | As far as I can tell, none of these uses of PACKAGESPLITFUNCS need append/prepend operators, the standard += and =+ can work just fine. Since OE-Core is copied a lot, use the preferred syntax which is also simpler to parse and change. (From OE-Core rev: 846ff49465337dddd75a83161f41f48117f6571c) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel.bbclass: remove empty module directories to prevent QA issuesOvidiu Panait2022-12-081-2/+2
| | | | | | | | | | | | | | | | | | | | Currently, allyesconfig test runs for x86_64 fail with: ERROR: linux-yocto-5.19.17+gitAUTOINC+0cba9aa404_aaf4490d18-r0 do_package: QA Issue: linux-yocto: Files/directories were installed but not shipped in any package: /lib/modules/5.19.17/kernel/drivers/nvdimm With CONFIG_NVDIMM_TEST_BUILD=m, an empty nvdimm directory is created during modules_install, which triggers the QA issue. Extend kernel_do_install() to also remove inner empty directories that might get created by modules_install. (From OE-Core rev: 7120b09a33af4c9a18063c0f2e51fb598697e39c) Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel.bbclass: make KERNEL_DEBUG_TIMESTAMPS work at rebuildChen Qi2022-11-201-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, the KERNEL_DEBUG_TIMESTAMPS is not working as expected at rebuild. That is, even if we set it to "1", the kernel build time is not changed. The problem could be reproduced by the following steps. 1. bitbake core-image-minimal; start image and check `uname -a` output. 2. set in local.conf: KERNEL_DEBUG_TIMESTAMPS = "1" 3. bitbake core-image-minimal; start image and check `uname -a` output. It's expected that after enabling KERNEL_DEBUG_TIMESTAMPS, the kernel build time will be set to current date. But it's not. This is because the compile.h was not re-generated when do_compile task was re-executed. In mkcompile_h, we have: """ # Only replace the real compile.h if the new one is different, # in order to preserve the timestamp and avoid unnecessary # recompilations. # We don't consider the file changed if only the date/time changed, # unless KBUILD_BUILD_TIMESTAMP was explicitly set (e.g. for # reproducible builds with that value referring to a commit timestamp). # A kernel config change will increase the generation number, thus # causing compile.h to be updated (including date/time) due to the # changed comment in the # first line. """ It has made it very clear that it will not be re-generated unless we have KBUILD_BUILD_TIMESTAMP set explicitly. So we set this variable explicitly in do_compile to fix this issue. (From OE-Core rev: 1b68c2d2d385013a1c535ef81172494302a36d74) Signed-off-by: Chen Qi <Qi.Chen@windriver.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel.bbclass: Include randstruct seed assets in STAGING_KERNEL_BUILDDIRDiego Sueiro2022-11-071-0/+16
| | | | | | | | | | | | | | When building with CONFIG_MODVERSIONS=y and CONFIG_RANDSTRUCT=y we need to copy the build assets generated for the randstrutc seed to STAGING_KERNEL_BUILDDIR, otherwise the out-of-tree modules build will generate those assets which will result in a different RANDSTRUCT_HASHED_SEED. (From OE-Core rev: b36303158b2e0273ff415bdedefb379f680b30fc) Signed-off-by: Diego Sueiro <diego.sueiro@arm.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel: Clear SYSROOT_DIRS instead of replacing sysroot_stage_allSean Anderson2022-10-261-3/+1
| | | | | | | | | | | | Replacing sysroot_stage_all by a no-op recipe makes it difficult for bbappends to stage files intentionally. Instead, just clear SYSROOT_DIRS, allowing other bbappends to easily add new directories. (From OE-Core rev: 849791e7086463a4c7c53c2c1ed9603a6c3a080d) Signed-off-by: Sean Anderson <sean.anderson@seco.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel.bbclass: Pass the kernel package name to depmodwrapperAndrei Gherzan2022-09-131-1/+1
| | | | | | | | | | This makes sure that the postinstall script it using the right kernel paths. (From OE-Core rev: 5105820df4800673c188366a76c1a3bd387a7148) Signed-off-by: Andrei Gherzan <andrei.gherzan@huawei.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel: Use consistent make flags for menuconfigRichard Purdie2022-09-031-1/+2
| | | | | | | | | | | We're currently only passing in a subset of the kernel make flags to menuconfig. Fix this to be consistent with all the other kernel operations since these are becomming increasingly reliant on host compilers and flags and target toolchains as well. (From OE-Core rev: 8c616bc090d1834a21073a33209323220c05d2e5) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel: Always set CC and LD for the kernel buildRichard Purdie2022-09-031-6/+7
| | | | | | | | | | | | It as been bothering me a bit that we don't set CC and LD consistently for the kernel make calls and this can lead to interesting bugs as the kernel increases in complexity. Add them to EXTRA_OEMAKE so they're always passed in. This makes everything slightly more consistent and less likely to break in future. (From OE-Core rev: afe8c318843e4033dcc07e4f10198df241d8e4f6) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* classes: Update classes to match new bitbake class scope functionalityRichard Purdie2022-08-121-0/+821
Move classes to classes-global or classes-recipe as appropriate to take advantage of new bitbake functionality to check class scope/usage. (From OE-Core rev: f5c128008365e141082c129417eb72d2751e8045) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>