summaryrefslogtreecommitdiffstats
path: root/meta/classes/kernel-module-split.bbclass
Commit message (Collapse)AuthorAgeFilesLines
* kernel: move source and build output to work-sharedBruce Ashfield2015-01-161-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-module-split.bbclass: Allow autoloading multiple modules or modules ↵Martin Jansa2014-07-231-3/+9
| | | | | | | | | | | | | | | | | | | | | | | | where basename != module name * new KERNEL_MODULE_AUTOLOAD syntax doesn't support modules where basename and module name don't match (usually - and _), e.g.: module_autoload_bq27x00_battery = "bq27x00-battery" * sometimes it's useful to load modules in particular order and module_autoload allowed to just list multiple modules, e.g.: module_autoload_snd-soc-neo1973-wm8753 = "snd-soc-s3c24xx snd_soc_s3c24xx_i2s snd-soc-dfbmcs320 snd-soc-wm8753 snd-soc-neo1973-wm8753" or module_autoload_g_ether = "s3c2410_udc g_ether" restore this possibility which is useful for incorrect dependencies between modules (From OE-Core rev: e9cd8ba3dda624615b68c601eac04427d9483f14) Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel-module-split: Fix KERNEL_MODULE_AUTOLOAD handlingRichard Purdie2014-06-181-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Addresses the problem: The stack trace of python calls that resulted in this exception/failure was: File: 'split_kernel_module_packages', lineno: 164, function: <module> 0160: if len(os.listdir(dir)) == 0: 0161: os.rmdir(dir) 0162: 0163: *** 0164:split_kernel_module_packages(d) 0165: File: 'split_kernel_module_packages', lineno: 150, function: split_kernel_module_packages 0146: 0147: postinst = d.getVar('pkg_postinst_modules', True) 0148: postrm = d.getVar('pkg_postrm_modules', True) 0149: *** 0150: modules = do_split_packages(d, root='/lib/modules', file_regex=module_regex, output_pattern=module_pattern, description='%s kernel module', postinst=postinst, postrm=postrm, recursive=True, hook=frob_metadata, extra_depends='kernel-%s' % (d.getVar("KERNEL_VERSION", True))) 0151: if modules: 0152: metapkg = d.getVar('KERNEL_MODULES_META_PACKAGE', True) 0153: d.appendVar('RDEPENDS_' + metapkg, ' '+' '.join(modules)) 0154: File: 'package.bbclass', lineno: 148, function: do_split_packages 0144: d.setVar('pkg_postrm_' + pkg, postrm) 0145: else: 0146: d.setVar('FILES_' + pkg, oldfiles + " " + newfile) 0147: if callable(hook): *** 0148: hook(f, pkg, file_regex, output_pattern, m.group(1)) 0149: 0150: d.setVar('PACKAGES', ' '.join(packages)) 0151: return split_packages 0152: File: 'split_kernel_module_packages', lineno: 109, function: frob_metadata File "split_kernel_module_packages", line 109, in frob_metadata Exception: AttributeError: 'NoneType' object has no attribute 'split' ERROR: Function failed: split_kernel_module_packages [YOCTO #6461] [a revised version of a patch from Nitin Kamble] (From OE-Core rev: f30d12b4fbfe7d6b581598efa9ceca69dcfb4294) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel-module-split: Add support for KERNEL_MODULE_AUTOLOAD and ↵Richard Purdie2014-06-161-1/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | KERNEL_MODULE_PROBECONF The current module_autoload_* and module_conf_* variables are error both ugly and error prone. They aren't registered in the task checksums so changes to them aren't reflected in the build. This turns out to be near impossible to fix with the current variable format in any sensible way :(. This patch replace module_autoload with the list of variables in KERNEL_MODULE_AUTOLOAD which is a much simpler and usable API. An error is printed if an old style variable is encountered. It should be simple to convert to this. module_conf_* are harder to deal with since there is data associated with it, it isn't simply a flag. We need a list of variables that are set in order to be able to correctly handle the task checksum so we add KERNEL_MODULE_PROBECONF for this purpose and error if the user hasn't added a module to it when they should have. [YOCTO #5786] (From OE-Core rev: 6f8b5be646be0f3e15e215907547f11d2a23d81b) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel-module-split: Remove extraneous call to depmod from module postinstPhil Blundell2014-01-101-1/+3
| | | | | | | | | | | During rootfs construction, image.bbclass will call depmod after all the modules are installed. There's no need to run it from the postinst when operating in offline root mode. (From OE-Core rev: e8db81e4655ab7535db04aa3c8d7f9868ced6039) Signed-off-by: Phil Blundell <pb@pbcl.net> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* image/kernel-module-split/eglibc-ld.inc: Remove has_key() usageRichard Purdie2013-05-091-2/+2
| | | | | | | | | The has_key() attribute has been removed in python 3 since there is better syntax available. Use the improved syntax. (From OE-Core rev: 3dff13793e875ff58cc38c4a960caca9b6969843) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel-module-split: append space to RDEPENDSMartin Jansa2013-03-071-1/+1
| | | | | | | | | | | * it was generating invalid RDEPENDS when KERNEL_MODULES_META_PACKAGE had RDEPENDS set already without trailing space (From OE-Core rev: 5ff26f61b6860e56c255b2b6a2b0215be75b1db9) 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: extract functions for kernel modules to separate bbclassMartin Jansa2013-03-051-0/+185
* this way we can reuse the same functionality also for external modules including module_autoload_foo and module_conf_foo functionality * MODULE_PACKAGES variable was removed (splited modules are now returned by do_split_packages * KERNEL_MODULES_META_PACKAGE is used to append all splitted packages to RDEPENDS. In kernel.bbclass it's old "kernel-modules" in module.bbclass it defaults to ${PN} for upgrade path from single PN with all modules to PN depending on all new kernel-module-* (From OE-Core rev: 51928b6b5ca0a46a9dcd754483a19af58b95fa18) Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>