kernel: consolidated pull request
cover kernel: consolidated pull request
Hi all,
I have some more -stable changes queued for the kernels, but didn't want to sit on these any longer, in particulare the re-work of kernel-devsrc to not suck up hundreds of megs, or hundreds of seconds of processing.
The 4.12 update is a feature addition, while 4.14/4.15 are yaffs2 warning fixes.
The commit log for kernel-devsrc explains the changes:
-----------------------
Subject: [PATCH 3/3] kernel-devsrc: restructure for out of tree (and on target) module builds
The existing kernel-devsrc package starts with a full copy of the kernel source and then starts to strip out elements that are not required.
This results in extra time (I/O) and extra space being taken up in the final package. The main purpose of the kernel-devsrc package has been to build modules against the running kernel, not to include a full copy of the source code for re-building the kernel. The end result was a 600M kernel-devsrc package.
This restructuring of the package uses an approach similar to other distros, where the kernel-devsrc package is for building against the running kernel and uses a curated set of copied infrastructure, versus a mass copy of the entire kernel.
The differences in this approach versus other is largely due to the architecture support and the split build/source directory of the kernel.
The result is a kernel-devsrc package of about 10M, which is capable of running "make scripts" and compiling kernel modules against the running kernel.
Along with the changes to the copying of the infrascture, we also have the following changes:
- a better/more explicit listing of dependencies for on-target builds of "make scripts" or "make modules_prepare"
- The kernel source is installed into /lib/modules/<version>/build and a symlink created from /usr/src/kernel to the new location. This aligns with the standard location for module support code
- There is also a symlink from /lib/modules/<version>/source -> build to reserve a spot for a new package that is simply the kernel source. That package is not part of this update.
[YOCTO #12535]
-----------------------
Cheers,
Bruce
The following changes since commit 1b7a9d4f63d07d61d53daac12da275e8ef2feb24:
buildhistory-diff: honour report_all flag (2018-02-24 10:35:59 +0000)
are available in the git repository at:
git://git.pokylinux.org/poky-contrib zedd/kernel
http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=zedd/kernel
Bruce Ashfield (3):
linux-yocto/4.14/4.15: yaffs2 fixes
linux-yocto/4.12: add stratix10 SoC development board
kernel-devsrc: restructure for out of tree (and on target) module
builds
meta/recipes-kernel/linux/kernel-devsrc.bb | 178 ++++++++++++++++----- meta/recipes-kernel/linux/linux-yocto-rt_4.12.bb | 2 +- meta/recipes-kernel/linux/linux-yocto-rt_4.14.bb | 4 +- meta/recipes-kernel/linux/linux-yocto-rt_4.15.bb | 4 +- meta/recipes-kernel/linux/linux-yocto-tiny_4.12.bb | 2 +- meta/recipes-kernel/linux/linux-yocto-tiny_4.14.bb | 4 +- meta/recipes-kernel/linux/linux-yocto-tiny_4.15.bb | 4 +- meta/recipes-kernel/linux/linux-yocto_4.12.bb | 16 +- meta/recipes-kernel/linux/linux-yocto_4.14.bb | 18 +-- meta/recipes-kernel/linux/linux-yocto_4.15.bb | 18 +-- 10 files changed, 174 insertions(+), 76 deletions(-)
Signature · 1 line
2.5.0
PATCH 1/3 linux-yocto/4.14/4.15: yaffs2 fixes
Integrating the following fixes for yaffs2:
9f9649fffac9 yaffs2: Adjust the timer callback and init functions 0ef24a829eee yaffs2: include rawnand.h instead of nand.h
--- meta/recipes-kernel/linux/linux-yocto-rt_4.14.bb | 4 ++-- meta/recipes-kernel/linux/linux-yocto-rt_4.15.bb | 4 ++-- meta/recipes-kernel/linux/linux-yocto-tiny_4.14.bb | 4 ++-- meta/recipes-kernel/linux/linux-yocto-tiny_4.15.bb | 4 ++-- meta/recipes-kernel/linux/linux-yocto_4.14.bb | 18 +++++++++--------- meta/recipes-kernel/linux/linux-yocto_4.15.bb | 18 +++++++++--------- 6 files changed, 26 insertions(+), 26 deletions(-)
meta/recipes-kernel/linux/linux-yocto-rt_4.14.bb +2 -2
@@ -11,8 +11,8 @@ python () { raise bb.parse.SkipRecipe("Set PREFERRED_PROVIDER_virtual/kernel to linux-yocto-rt to enable it") } -SRCREV_machine ?= "801d947020635762ac9af9ddf2edfaa1b2858414" -SRCREV_meta ?= "b4468b54b2a7e7fbdf207ead7ca925bc24976d1b" +SRCREV_machine ?= "7d5b8bc3ba49d0ea78fbbb7c628ee56a08a60253" +SRCREV_meta ?= "c5e05f3c61046bf6445adff30d5a03a82677d351" SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine \ git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-4.14;destsuffix=${KMETA}"
meta/recipes-kernel/linux/linux-yocto-rt_4.15.bb +2 -2
@@ -11,8 +11,8 @@ python () { raise bb.parse.SkipRecipe("Set PREFERRED_PROVIDER_virtual/kernel to linux-yocto-rt to enable it") } -SRCREV_machine ?= "a6a3a6a73d628798fc6eb6832bf829a9ea43f6bd" -SRCREV_meta ?= "030f397472fc8ea8e7f8a069153bc3b6d52f3d45" +SRCREV_machine ?= "9f9649fffac97603862fdc90530e0b3ff038eed1" +SRCREV_meta ?= "ac4dd298328c282f5e70b3ddb469edcad57590cf" SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine \ git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-4.15;destsuffix=${KMETA}"
meta/recipes-kernel/linux/linux-yocto-tiny_4.14.bb +2 -2
@@ -9,8 +9,8 @@ LINUX_VERSION ?= "4.14.19" KMETA = "kernel-meta" KCONF_BSP_AUDIT_LEVEL = "2" -SRCREV_machine ?= "537602db26fe2d26c1959f1ecb43966770c10ff2" -SRCREV_meta ?= "b4468b54b2a7e7fbdf207ead7ca925bc24976d1b" +SRCREV_machine ?= "57ed1d816d318dfafd0339fade9c694b3c00998d" +SRCREV_meta ?= "c5e05f3c61046bf6445adff30d5a03a82677d351" PV = "${LINUX_VERSION}+git${SRCPV}"
meta/recipes-kernel/linux/linux-yocto-tiny_4.15.bb +2 -2
@@ -18,8 +18,8 @@ SRCREV_machine_qemuppc ?= "9c2e6c0fc71526c45fc7ddf3ec91e2e2f27e3da0" SRCREV_machine_qemux86 ?= "9c2e6c0fc71526c45fc7ddf3ec91e2e2f27e3da0" SRCREV_machine_qemux86-64 ?= "9c2e6c0fc71526c45fc7ddf3ec91e2e2f27e3da0" SRCREV_machine_qemumips64 ?= "f9a3a72209bde080e4ecb4fbe7a0f99954643131" -SRCREV_machine ?= "a6a3a6a73d628798fc6eb6832bf829a9ea43f6bd" -SRCREV_meta ?= "030f397472fc8ea8e7f8a069153bc3b6d52f3d45" +SRCREV_machine ?= "9f9649fffac97603862fdc90530e0b3ff038eed1" +SRCREV_meta ?= "ac4dd298328c282f5e70b3ddb469edcad57590cf" SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;name=machine;branch=${KBRANCH}; \ git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-4.15;destsuffix=${KMETA}"
meta/recipes-kernel/linux/linux-yocto_4.14.bb +9 -9
@@ -11,15 +11,15 @@ KBRANCH_qemux86 ?= "v4.14/standard/base" KBRANCH_qemux86-64 ?= "v4.14/standard/base" KBRANCH_qemumips64 ?= "v4.14/standard/mti-malta64" -SRCREV_machine_qemuarm ?= "773cb1d2d59644bf9574abed9803f8ec12bbabe1" -SRCREV_machine_qemuarm64 ?= "537602db26fe2d26c1959f1ecb43966770c10ff2" -SRCREV_machine_qemumips ?= "5fad9fa9377a7badd71ae4c1f1b1108d8cfcb047" -SRCREV_machine_qemuppc ?= "537602db26fe2d26c1959f1ecb43966770c10ff2" -SRCREV_machine_qemux86 ?= "537602db26fe2d26c1959f1ecb43966770c10ff2" -SRCREV_machine_qemux86-64 ?= "537602db26fe2d26c1959f1ecb43966770c10ff2" -SRCREV_machine_qemumips64 ?= "141cd6a1644eade83d4d43675a9ab11824ea01ea" -SRCREV_machine ?= "537602db26fe2d26c1959f1ecb43966770c10ff2" -SRCREV_meta ?= "b4468b54b2a7e7fbdf207ead7ca925bc24976d1b" +SRCREV_machine_qemuarm ?= "481c15cd5198aa4de9faa1b0edcf69e08f45540b" +SRCREV_machine_qemuarm64 ?= "57ed1d816d318dfafd0339fade9c694b3c00998d" +SRCREV_machine_qemumips ?= "b1adde8239132a9e189acbfd0e1c27d1a4ae695f" +SRCREV_machine_qemuppc ?= "57ed1d816d318dfafd0339fade9c694b3c00998d" +SRCREV_machine_qemux86 ?= "57ed1d816d318dfafd0339fade9c694b3c00998d" +SRCREV_machine_qemux86-64 ?= "57ed1d816d318dfafd0339fade9c694b3c00998d" +SRCREV_machine_qemumips64 ?= "971d3f31a5caf6035dbff8cefea2323c196178a9" +SRCREV_machine ?= "57ed1d816d318dfafd0339fade9c694b3c00998d" +SRCREV_meta ?= "c5e05f3c61046bf6445adff30d5a03a82677d351" SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;name=machine;branch=${KBRANCH}; \ git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-4.14;destsuffix=${KMETA}"
meta/recipes-kernel/linux/linux-yocto_4.15.bb +9 -9
@@ -11,15 +11,15 @@ KBRANCH_qemux86 ?= "v4.15/standard/base" KBRANCH_qemux86-64 ?= "v4.15/standard/base" KBRANCH_qemumips64 ?= "v4.15/standard/mti-malta64" -SRCREV_machine_qemuarm ?= "312b80a833f6be40034526f3155360f61d78608a" -SRCREV_machine_qemuarm64 ?= "a6a3a6a73d628798fc6eb6832bf829a9ea43f6bd" -SRCREV_machine_qemumips ?= "a52de76fa49f7c93031a807d8668ae2d7c2c4d0a" -SRCREV_machine_qemuppc ?= "a6a3a6a73d628798fc6eb6832bf829a9ea43f6bd" -SRCREV_machine_qemux86 ?= "a6a3a6a73d628798fc6eb6832bf829a9ea43f6bd" -SRCREV_machine_qemux86-64 ?= "a6a3a6a73d628798fc6eb6832bf829a9ea43f6bd" -SRCREV_machine_qemumips64 ?= "3a25d83e268bd34ff12f12011b0b8254e86833a2" -SRCREV_machine ?= "a6a3a6a73d628798fc6eb6832bf829a9ea43f6bd" -SRCREV_meta ?= "030f397472fc8ea8e7f8a069153bc3b6d52f3d45" +SRCREV_machine_qemuarm ?= "5a2a8f7f757b964da55bd3d2a95130051af2c173" +SRCREV_machine_qemuarm64 ?= "9f9649fffac97603862fdc90530e0b3ff038eed1" +SRCREV_machine_qemumips ?= "ee76cb3c65f9138c9e580c13feff6d0c6ebf5f9a" +SRCREV_machine_qemuppc ?= "9f9649fffac97603862fdc90530e0b3ff038eed1" +SRCREV_machine_qemux86 ?= "9f9649fffac97603862fdc90530e0b3ff038eed1" +SRCREV_machine_qemux86-64 ?= "9f9649fffac97603862fdc90530e0b3ff038eed1" +SRCREV_machine_qemumips64 ?= "3b587c8f1db7c5b425b35a98276c6d9b8dd61a2b" +SRCREV_machine ?= "9f9649fffac97603862fdc90530e0b3ff038eed1" +SRCREV_meta ?= "ac4dd298328c282f5e70b3ddb469edcad57590cf" SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;name=machine;branch=${KBRANCH}; \ git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-4.15;destsuffix=${KMETA}"
Signature · 1 line
2.5.0
Re: [PATCH 1/3] linux-yocto/4.14/4.15: yaffs2 fixes
Hi Bruce,
Quoted 7 lines · Bruce Ashfield
Integrating the following fixes for yaffs2:
9f9649fffac9yaffs2: Adjust the timer callback and init functions0ef24a829eeeyaffs2: includerawnand.hinstead ofnand.hSigned-off-by Kevin Hao <[email protected]>Signed-off-by Bruce Ashfield <[email protected]>
Quoted 8 lines
--- meta/recipes-kernel/linux/linux-yocto-rt_4.14.bb | 4 ++-- meta/recipes-kernel/linux/linux-yocto-rt_4.15.bb | 4 ++-- meta/recipes-kernel/linux/linux-yocto-tiny_4.14.bb | 4 ++-- meta/recipes-kernel/linux/linux-yocto-tiny_4.15.bb | 4 ++-- meta/recipes-kernel/linux/linux-yocto_4.14.bb | 18 +++++++++--------- meta/recipes-kernel/linux/linux-yocto_4.15.bb | 18 +++++++++--------- 6 files changed, 26 insertions(+), 26 deletions(-)
<snip>
For MIPS, KernelModuleTest fails in autobuilder ( probably due to this change - haven't bisected it)
RESULTS - kernelmodule.KernelModuleTest.test_kernel_module - Testcase 1541: FAILED
NOTE: ======================================================================
| NOTE: FAIL: test_kernel_module (kernelmodule.KernelModuleTest) | NOTE: ---------------------------------------------------------------------- | NOTE: Traceback (most recent call last): | File "/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-mips/build/meta/lib/oeqa/core/decorator/__init__.py", line 32, in wrapped_f | return func(*args, **kwargs) | File "/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-mips/build/meta/lib/oeqa/core/decorator/__init__.py", line 32, in wrapped_f | return func(*args, **kwargs) | File "/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-mips/build/meta/lib/oeqa/core/decorator/__init__.py", line 32, in wrapped_f | return func(*args, **kwargs) | File "/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-mips/build/meta/lib/oeqa/runtime/cases/kernelmodule.py", line 40, in test_kernel_module | self.assertEqual(status, 0, msg='\n'.join([cmd, output])) | AssertionError: 2 != 0 : cd /usr/src/kernel && make scripts | arch/mips/Makefile:240: arch/mips/Kbuild.platforms: No such file or directory | make: *** No rule to make target 'arch/mips/Kbuild.platforms'. Stop.
Best Regards,
Maxin
Re: [PATCH 1/3] linux-yocto/4.14/4.15: yaffs2 fixes
This is most likely to be the kernel-devsrc change. There's a number of failures across the autobuilder, I've just asked Maxin to collate the failures. :)
Quoted 66 lines · Maxin B. John
Hi Bruce,
Quoted 5 lines · Bruce Ashfield
Integrating the following fixes for yaffs2:
9f9649fffac9yaffs2: Adjust the timer callback and init functions0ef24a829eeeyaffs2: includerawnand.hinstead ofnand.hQuoted 8 lines
Signed-off-by Kevin Hao <[email protected]>Signed-off-by Bruce Ashfield <[email protected]>--- meta/recipes-kernel/linux/linux-yocto-rt_4.14.bb | 4 ++-- meta/recipes-kernel/linux/linux-yocto-rt_4.15.bb | 4 ++-- meta/recipes-kernel/linux/linux-yocto-tiny_4.14.bb | 4 ++-- meta/recipes-kernel/linux/linux-yocto-tiny_4.15.bb | 4 ++-- meta/recipes-kernel/linux/linux-yocto_4.14.bb | 18+++++++++---------
Quoted 1 line
meta/recipes-kernel/linux/linux-yocto_4.15.bb | 18+++++++++---------
Quoted 1 line
6 files changed, 26 insertions(+), 26 deletions(-)<snip>
For MIPS, KernelModuleTest fails in autobuilder ( probably due to this change - haven't bisected it)
https://autobuilder.yocto.io/builders/nightly-mips/builds/
806/steps/Running%20Sanity%20Tests/logs/stdioRESULTS - kernelmodule.KernelModuleTest.test_kernel_module - Testcase 1541: FAILED
NOTE: ============================================================
==========
| NOTE: FAIL:test_kernel_module(kernelmodule.KernelModuleTest) | NOTE: ------------------------------------------------------------
----------
| NOTE: Traceback (most recent call last):
| File "/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-mips/build/meta/lib/oeqa/core/decorator/__init__.py", line 32, inwrapped_f
| returnfunc(*args, **kwargs)
| File "/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-mips/build/meta/lib/oeqa/core/decorator/__init__.py", line 32, inwrapped_f
| returnfunc(*args, **kwargs)
| File "/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-mips/build/meta/lib/oeqa/core/decorator/__init__.py", line 32, inwrapped_f
| returnfunc(*args, **kwargs)
| File "/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-mips/build/meta/lib/oeqa/runtime/cases/kernelmodule.py", line 40, intest_kernel_module| self.assertEqual(status, 0, msg='\n'.join([cmd, output])) | AssertionError: 2 != 0 : cd /usr/src/kernel && make scripts | arch/mips/Makefile:240: arch/mips/Kbuild.platforms: No such file ordirectory
| make: *** No rule to make target 'arch/mips/Kbuild.platforms'. Stop.Best Regards,
Maxin
--
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core
PATCH 2/3 linux-yocto/4.12: add stratix10 SoC development board
In reply to Bruce AshfieldIntegrating the patches to introduce support for stratix10 SOC, which comprises the following commits:
22f73c1fe991 drivers: ethernet: stmmac: keep Ethernet clock in enable status on Stratix10 platform c3ceae6df341 drivers: ethernet: stmmac: improve phy control during ethernet suspend/resume 883d8df59543 drivers: ethernet: stmmac: set delay_us value as 0
063b17881fed arm64: dts: stratix10: add interrupt-parent property in root node e991516fa777 arm64: dts: stratix10: correct PMU interrupt number
555f51414098 arm64: dts: stratix10: add alias for i2c1
a5dd201f0e8c arm64: dts: stratix10: control FPGA IO from linux kernel
67e763e631bd mtd: spi-nor: add support for mt25qu02g serial flash
6068e35ed261 arm64: dts: stratix10: enable qspi feature
2d019c47939c arm64: dts: stratix10: add USB ECC reset bit
d9b9d63a6417 FogBugz #516572: add clock to USB nodes
f4bca65baf07 arm64: dts: stratix10: enable USB on the devkit
1ed12c04eac6 arm64: dts: stratix10: remove phy node for usb
b9b8f08f50ca usb: dwc2: add optional usb ecc reset bit
7a04b5cba903 usb: dwc2: disable erroneous overcurrent condition
aac3bd2a2e23 dts: stratix10_socdk: enable gpio1 and leds
9807c107b1c3 arm64: dts: stratix10: fix interrupt number for gpio1
cbd264cde6bc arm64: dts: stratix10: add gpio header
f91f7117ef93 gpio: gpio-dwapb: add optional reset
3aa90a6801aa mtd: spi-nor: Allow Cadence QSPI support for ARM64
3bb156eb80b6 FogBugz #495013-1: dts: stratix10: Add QSPI support for Stratix10 81981997697b reset: socfpga: fix for 64-bit compilation
882cc1f9800d FogBugz #491967-5: dts: stratix10: add ltc2497
d7b3bc0833a6 FogBugz #492768: Revert "i2c: dw: temporary workaround for i2c clocks" 60711b82517f arm64: dts: stratix10: add reset property for various peripherals f9aeefce1310 arm64: stratix10: add the 'altr,modrst-off' property
e65b02b3b5b7 arm64: stratix10: include the reset manager bindings
7ffbb161ee30 reset: socfpga: build the reset-socfpga for Stratix10 SOC 95197b89dd72 FogBugz #493310: dts: use the clocks for the timers and uarts c6ec92c9222a FogBugz #493306: mark the l4_sp_clk as a critical clock
7caf335dd0fa FogBugz #492768: i2c: dw: temporary workaround for i2c clocks b247b5ed60c0 FogBugz #491967-2: dts: stratix10: enable i2c
b0ea5bac0b3a FogBugz #492420: fix up the correct order of parents for noc_clk c81d19a6683b arm64: dts: stratix10: add ethernet/sdmmc support to S10 devkit 00d6740c9ec9 FogBugz #491251: temporary remove PSCI node
789aabac6e9d arm64: dts: fix up the gic register for the Stratix10 platform 9504049ea576 FogBugz #488936-2: Add clocks to emac/sdmmc node
8ad32e880376 FogBugz #488936-1: dts: bringup SoCFPGA Stratix10 devkit
f826ccc79752 FogBugz #488843-2: add clock driver for Stratix10 SOC
56594bb54083 FogBugz #488843-1: dts: clock bindings for the SoCFPGA Stratix10 2a25f1e19487 FogBugz #488851: dts: use spin-table for SMP
d36f9d7f16c3 net: stmmac: Adjust dump offset of DMA registers for ethtool 50eb2994beea Revert "FogBugz #470510: Update stratix10_swvp.dts file for S10 SoC Simics/VP" 9cc3c6bc11a7 net: stmmac: Add additional registers for dwmac1000_dma ethtool 4b12474ecb09 FogBugz #470512: Update stratix10_swvp.dts file for S10 SoC Simics/VP 2e1cf1b70e9a FogBugz #468942-2: Modify QSPI read_delay for Arria10.
a2baa4e9366e FogBugz #454145: Update stratix10_swvp.dts file for S10 SoC VP 352eccb9c28e dt-bindings: reset: Add reset manager offsets for Stratix10 4951f51f6650 FogBugz #458420-2: ARM: dts: add lcd character panel
52625560a859 FogBugz #458420-1: dts: arria10 socdk: add max1619
a7926b2fe419 ARM: dts: socfpga: set the i2c frequency
af2c59f5810f FogBugz #374571: Fix Sysid driver hotplug support.
b1d136a8001d FogBugz #284482-2: A10 cache coherency is different than A5/C5. 8dc53e9000e6 FogBugz #284482-1: A10 cache coherency is different than A5/C5. cf59a2fb8882 FogBugz #408870: add debugfs interface for fpga config complete timeout a2a924222a02 FogBugz #421690: use a unique name to register freeze controller db0c754560cb FogBugz #403389-1: Altera Partial Reconfiguration IP Core 2b11bb966e23 FogBugz #412211: fpga: fix fpga mgr debugfs for module
546b85ceb86f FogBugz #411427: fpga: memory leaks in fpga manager debugfs 186529660ef2 FogBugz #405628-1: fpga: doc: add config complete timeout e97cb7797091 FogBugz #404467: add missing binding documentation
9454b288338e FogBugz #411698-3: hwmon: Add Altera A10-SR power supply alarms 181766fbe257 FogBugz #411698-2: Add Altera A10-SR power supply alarms
995c713ce65a FogBugz #408205: fix printf format error
ff30a92ebff5 FogBugz #398879-2: fpga mgr debugfs
46856886744c FogBugz #398879-1: fpga: doc: documentation for FPGA debugfs 559f1b2b61f1 FogBugz #365525-3: socfpga: dts: remove fpga image specific info 6ac61db6de48 ARM: DT: Enable symbols when CONFIG_OF_OVERLAY is used
784a7fe5585c OF: DT-Overlay configfs interface (v7)
dcc6ae577325 FogBugz #334039: enable SMP for the Stratix10 SWVP
83c3f4a2b7dc FogBugz #332965: missing Makefile to build Stratix10 SWVP dts 5604a2ed0cd1 FogBugz #331066: misc: altera_hwmutex: remove redundant unused of_match_ptr e5ad2362d2bc FogBugz #331067: misc: altera_hwmutex: remove .owner
fdcb3fa5a3a5 FogBugz #332657-2: Stratix 10 Software Virtual Platform
d64f00ea688a FogBugz #332657-1: Stratix 10 Software Virtual Platform
86026fe01b25 FogBugz #299928: arria10 swvp: add device tree
146f064db340 devicetree: net: micrel-ksz90x1.txt: correct documentation 71244d32db2b TRCom NAND board device tree.
bb328948b0b5 FogBugz #184650: Cleanup Altera license headers.
8e855ce4b0c2 misc: sysid: use IS_ERR and PTR_ERR to check for error
d5e88e198db0 misc: hwmutex: use IS_ERR and PTR_ERR to check for error
8e7d24910197 FogBugz #236669: Add a Kconfig for ILC driver
790e85ef4b28 misc: ilc: replace devm_request_and_ioremap with devm_ioremap_and_resource 1025d2218b88 misc: sysid: replace devm_request_and_ioremap with devm_ioremap_and_resource 0b1dbbb5a411 misc: hwmutex: replace devm_request_and_ioremap with devm_ioremap_resource f78ea9d901c6 FogBugz #240546: Move VIP driver into FB hardware folder
56c37d32951b FogBugz #177284: add Altera VIP framebuffer driver
c006613bfc15 FogBugz #229601: newhaven lcd: fix kbuild test robot warnings a20f46e5560c FogBugz #101176: add sys entry to set lcd module brightness effc29afd46a FogBugz #125882: lcd module needs time to process commands. ffab5da4edbf FogBugz #118160: support tilde character on newhaven lcd module c72219530e09 FogBugz #114479: load custom character for backslash
0eb518db5832 FogBugz #107683: handle backspace better in lcd driver
c62a261496fc tty: newhaven_lcd: Remove devinit and devexit
717f3b73f7c7 FogBugz #102358: i2c newhaven lcd driver uses faulty hyphen 394b437bac51 FogBugz #100586: Set lcd backlight brightness to max
3754d6b77c1b FogBugz #84276: lcd driver on i2c
115230c21271 FogBugz #143478: drivers/misc: Move sysid from arch to drivers 8e28bdd388c4 FogBugz #178225: Add Altera interrupt latency counter driver 095297e45627 FogBugz #144109: Remove extra lines from license header
6534e0969ae2 FogBugz #143451: Fix mutex compatible string
8eb7914d1532 FogBugz #138162: Add Altera hardware mutex driver
075f0367ff60 FogBugz #184646: Turn on all peripheral clocks for a system reboot d695a0616fda FogBugz #172665: Sample driver for DMA transfer to FPGA soft IP (FIFO) f7b3f6418bbc FogBugz #143478: arch/arm: Move sysid from arch to drivers 1dd2f4af39a0 ARM: socfpga: Turn on ARM errata for L2 cache
40146055677a mm/sparsemem: Fix ARM64 boot crash when CONFIG_SPARSEMEM_EXTREME=y
--- meta/recipes-kernel/linux/linux-yocto-rt_4.12.bb | 2 +- meta/recipes-kernel/linux/linux-yocto-tiny_4.12.bb | 2 +- meta/recipes-kernel/linux/linux-yocto_4.12.bb | 16 ++++++++-------- 3 files changed, 10 insertions(+), 10 deletions(-)
meta/recipes-kernel/linux/linux-yocto-rt_4.12.bb +1 -1
@@ -11,7 +11,7 @@ python () { raise bb.parse.SkipRecipe("Set PREFERRED_PROVIDER_virtual/kernel to linux-yocto-rt to enable it") } -SRCREV_machine ?= "33aa1a4ea44399f12dfb26146ea06db5cd02ca69" +SRCREV_machine ?= "ba4e0e2d358124def579da9ba5992f6dcb94eea8" SRCREV_meta ?= "19d815d5a34bfaad95d87cc097cef18b594daac8" SRC_URI = "git://git.yoctoproject.org/linux-yocto-4.12.git;branch=${KBRANCH};name=machine \
meta/recipes-kernel/linux/linux-yocto-tiny_4.12.bb +1 -1
@@ -9,7 +9,7 @@ LINUX_VERSION ?= "4.12.20" KMETA = "kernel-meta" KCONF_BSP_AUDIT_LEVEL = "2" -SRCREV_machine ?= "40146055677a69730b2c36da1c8c1b4e9bae7bb0" +SRCREV_machine ?= "22f73c1fe99198a7b37aa5c76978fe19d301fd88" SRCREV_meta ?= "19d815d5a34bfaad95d87cc097cef18b594daac8" PV = "${LINUX_VERSION}+git${SRCPV}"
meta/recipes-kernel/linux/linux-yocto_4.12.bb +8 -8
@@ -11,14 +11,14 @@ KBRANCH_qemux86 ?= "standard/base" KBRANCH_qemux86-64 ?= "standard/base" KBRANCH_qemumips64 ?= "standard/mti-malta64" -SRCREV_machine_qemuarm ?= "6e5a99db3a495e023041a30d43262047795e645a" -SRCREV_machine_qemuarm64 ?= "40146055677a69730b2c36da1c8c1b4e9bae7bb0" -SRCREV_machine_qemumips ?= "43dc47f90007d54c7086cc03b28e946e30135f1c" -SRCREV_machine_qemuppc ?= "40146055677a69730b2c36da1c8c1b4e9bae7bb0" -SRCREV_machine_qemux86 ?= "40146055677a69730b2c36da1c8c1b4e9bae7bb0" -SRCREV_machine_qemux86-64 ?= "40146055677a69730b2c36da1c8c1b4e9bae7bb0" -SRCREV_machine_qemumips64 ?= "69f0c96d8e47b0dccfb374809d729f0042c77868" -SRCREV_machine ?= "40146055677a69730b2c36da1c8c1b4e9bae7bb0" +SRCREV_machine_qemuarm ?= "7122a8d189df29393419b3352ea11482efaa417a" +SRCREV_machine_qemuarm64 ?= "22f73c1fe99198a7b37aa5c76978fe19d301fd88" +SRCREV_machine_qemumips ?= "1cff37b7a2bbee4bb99118e57d228ac301fb880b" +SRCREV_machine_qemuppc ?= "22f73c1fe99198a7b37aa5c76978fe19d301fd88" +SRCREV_machine_qemux86 ?= "22f73c1fe99198a7b37aa5c76978fe19d301fd88" +SRCREV_machine_qemux86-64 ?= "22f73c1fe99198a7b37aa5c76978fe19d301fd88" +SRCREV_machine_qemumips64 ?= "3879cb9ed592f8d5db6b35c51761818ad60494da" +SRCREV_machine ?= "22f73c1fe99198a7b37aa5c76978fe19d301fd88" SRCREV_meta ?= "19d815d5a34bfaad95d87cc097cef18b594daac8" SRC_URI = "git://git.yoctoproject.org/linux-yocto-4.12.git;name=machine;branch=${KBRANCH}; \
Signature · 1 line
2.5.0
PATCH 3/3 kernel-devsrc: restructure for out of tree (and on target) module builds
In reply to Bruce AshfieldThe existing kernel-devsrc package starts with a full copy of the kernel source and then starts to strip out elements that are not required.
This results in extra time (I/O) and extra space being taken up in the final package. The main purpose of the kernel-devsrc package has been to build modules against the running kernel, not to include a full copy of the source code for re-building the kernel. The end result was a 600M kernel-devsrc package.
This restructuring of the package uses an approach similar to other distros, where the kernel-devsrc package is for building against the running kernel and uses a curated set of copied infrastructure, versus a mass copy of the entire kernel.
The differences in this approach versus other is largely due to the architecture support and the split build/source directory of the kernel.
The result is a kernel-devsrc package of about 10M, which is capable of running "make scripts" and compiling kernel modules against the running kernel.
Along with the changes to the copying of the infrascture, we also have the following changes:
- a better/more explicit listing of dependencies for on-target builds of "make scripts" or "make modules_prepare"
- The kernel source is installed into /lib/modules/<version>/build and a symlink created from /usr/src/kernel to the new location. This aligns with the standard location for module support code
- There is also a symlink from /lib/modules/<version>/source -> build to reserve a spot for a new package that is simply the kernel source. That package is not part of this update.
[YOCTO #12535]
--- meta/recipes-kernel/linux/kernel-devsrc.bb | 178 ++++++++++++++++++++++------- 1 file changed, 138 insertions(+), 40 deletions(-)
meta/recipes-kernel/linux/kernel-devsrc.bb +138 -40
@@ -30,50 +30,148 @@ do_populate_sysroot[noexec] = "1" S = "${STAGING_KERNEL_DIR}" B = "${STAGING_KERNEL_BUILDDIR}" -KERNEL_VERSION = "${@get_kernelversion_headers('${S}')}" - PACKAGE_ARCH = "${MACHINE_ARCH}" +KERNEL_BUILD_ROOT="/lib/modules/" + do_install() { - kerneldir=${D}${KERNEL_SRC_PATH} - install -d $kerneldir - - # - # Copy the staging dir source (and module build support) into the devsrc structure. - # We can keep this copy simple and take everything, since a we'll clean up any build - # artifacts afterwards, and the extra i/o is not significant - # - cd ${B} - find . -type d -name '.git*' -prune -o -path '.debug' -prune -o -type f -print0 | cpio --null -pdlu $kerneldir - cd ${S} - find . -type d -name '.git*' -prune -o -type d -name '.kernel-meta' -prune -o -type f -print0 | cpio --null -pdlu $kerneldir - - # Explicitly set KBUILD_OUTPUT to ensure that the image directory is cleaned and not - # The main build artifacts. We clean the directory to avoid QA errors on mismatched - # architecture (since scripts and helpers are native format). - KBUILD_OUTPUT="$kerneldir" - oe_runmake -C $kerneldir CC="${KERNEL_CC}" LD="${KERNEL_LD}" clean _mrproper_scripts - # make clean generates an absolute path symlink called "source" - # in $kerneldir points to $kerneldir, which doesn't make any - # sense, so remove it. - if [ -L $kerneldir/source ]; then - bbnote "Removing $kerneldir/source symlink" - rm -f $kerneldir/source - fi - - # As of Linux kernel version 3.0.1, the clean target removes - # arch/powerpc/lib/crtsavres.o which is present in - # KBUILD_LDFLAGS_MODULE, making it required to build external modules. - if [ ${ARCH} = "powerpc" ]; then - mkdir -p $kerneldir/arch/powerpc/lib/ - cp ${B}/arch/powerpc/lib/crtsavres.o $kerneldir/arch/powerpc/lib/crtsavres.o - fi - - chown -R root:root ${D} + kerneldir=${D}${KERNEL_BUILD_ROOT}${KERNEL_VERSION} + install -d $kerneldir + + # create the directory structure + rm -f $kerneldir/build + rm -f $kerneldir/source + mkdir -p $kerneldir/build + + # for compatibility with some older variants of this package, we + # create a /usr/src/kernel symlink to /lib/modules/<version>/source + mkdir -p ${D}/usr/src + ( + cd ${D}/usr/src + ln -s ${KERNEL_BUILD_ROOT}${KERNEL_VERSION}/source kernel + ) + + # for on target purposes, we unify build and source + ( + cd $kerneldir + ln -s build source + ) + + # first copy everything + ( + cd ${S} + cp --parents $(find -type f -name "Makefile*" -o -name "Kconfig*") $kerneldir/build + ) + + # then drop all but the needed Makefiles/Kconfig files + rm -rf $kerneldir/build/Documentation + rm -rf $kerneldir/build/scripts + rm -rf $kerneldir/build/include + + # now copy in parts from the build that we'll need later + ( + cd ${B} + + cp Module.symvers $kerneldir/build + cp System.map* $kerneldir/build + if [ -s Module.markers ]; then + cp Module.markers $kerneldir/build + fi + + cp .config $kerneldir/build + + # TODO: this scripts copy will likely blow up QA, so for now, we + # require a more complex 'make scripts' to restore these, versus + # copying them here. Left as a reference to indicate that we + # know the scripts must be dealt with. + # cp -a scripts $kerneldir/build + + if [ -f tools/objtool/objtool ]; then + cp -a tools/objtool/objtool $kerneldir/build/tools/objtool/ + fi + if [ -d arch/${ARCH}/scripts ]; then + cp -a arch/${ARCH}/scripts $kerneldir/build/arch/${ARCH} + fi + if [ -f arch/${ARCH}/*lds ]; then + cp -a arch/${ARCH}/*lds $kerneldir/build/arch/${ARCH} + fi + + rm -f $kerneldir/build/scripts/*.o + rm -f $kerneldir/build/scripts/*/*.o + + if [ "${ARCH}" = "powerpc" ]; then + cp -a --parents arch/powerpc/lib/crtsavres.[So] $kerneldir/build/ + fi + + cp -a include $kerneldir/build/include + ) + + # now grab the chunks from the source tree that we need + ( + cd ${S} + + cp -a scripts $kerneldir/build + if [ "${ARCH}" = "arm64" ]; then + # arch/arm64/include/asm/xen references arch/arm + cp -a --parents arch/arm/include/asm/xen $kerneldir/build/ + # arch/arm64/include/asm/opcodes.h references arch/arm + cp -a --parents arch/arm/include/asm/opcodes.h $kerneldir/build/ + fi + + # include the machine specific headers for ARM variants, if available. + if [ "${ARCH}" = "arm" ]; then + cp -a --parents arch/${ARCH}/mach-*/include $kerneldir/build/ + + # include a few files for 'make prepare' + cp -a --parents arch/arm/tools/gen-mach-types $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ + cp -a --parents arch/arm/tools/mach-types $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ + fi + + if [ -d arch/${ARCH}/include ]; then + cp -a --parents arch/${ARCH}/include $kerneldir/build/ + fi + + cp -a include $kerneldir/build + + if [ "${ARCH}" = "x86" ]; then + # files for 'make prepare' to succeed with kernel-devel + cp -a --parents arch/x86/entry/syscalls/syscall_32.tbl $kerneldir/build/ + cp -a --parents arch/x86/entry/syscalls/syscalltbl.sh $kerneldir/build/ + cp -a --parents arch/x86/entry/syscalls/syscallhdr.sh $kerneldir/build/ + cp -a --parents arch/x86/entry/syscalls/syscall_64.tbl $kerneldir/build/ + cp -a --parents arch/x86/tools/relocs_32.c $kerneldir/build/ + cp -a --parents arch/x86/tools/relocs_64.c $kerneldir/build/ + cp -a --parents arch/x86/tools/relocs.c $kerneldir/build/ + cp -a --parents arch/x86/tools/relocs_common.c $kerneldir/build/ + cp -a --parents arch/x86/tools/relocs.h $kerneldir/build/ + cp -a --parents tools/include/tools/le_byteshift.h $kerneldir/build/ + cp -a --parents tools/include/tools/be_byteshift.h $kerneldir/build/ + cp -a --parents arch/x86/purgatory/purgatory.c $kerneldir/build/ + cp -a --parents arch/x86/purgatory/sha256.h $kerneldir/build/ + cp -a --parents arch/x86/purgatory/sha256.c $kerneldir/build/ + cp -a --parents arch/x86/purgatory/stack.S $kerneldir/build/ + cp -a --parents arch/x86/purgatory/string.c $kerneldir/build/ + cp -a --parents arch/x86/purgatory/setup-x86_64.S $kerneldir/build/ + cp -a --parents arch/x86/purgatory/entry64.S $kerneldir/build/ + cp -a --parents arch/x86/boot/string.h $kerneldir/build/ + cp -a --parents arch/x86/boot/string.c $kerneldir/build/ + cp -a --parents arch/x86/boot/ctype.h $kerneldir/build/ + fi + ) + + # Make sure the Makefile and version.h have a matching timestamp so that + # external modules can be built + touch -r $kerneldir/build/Makefile $kerneldir/build/include/generated/uapi/linux/version.h + + # Copy .config to include/config/auto.conf so "make prepare" is unnecessary. + cp $kerneldir/build/.config $kerneldir/build/include/config/auto.conf + + chown -R root:root ${D} } + # Ensure we don't race against "make scripts" during cpio do_install[lockfiles] = "${TMPDIR}/kernel-scripts.lock" -PACKAGES = "kernel-devsrc" -FILES_${PN} = "${KERNEL_SRC_PATH}" -RDEPENDS_${PN} = "bc" +FILES_${PN} = "${KERNEL_BUILD_ROOT} ${KERNEL_SRC_PATH}" +FILES_${PN}-dbg += "${KERNEL_BUILD_ROOT}*/build/scripts/*/.debug/*" +RDEPENDS_${PN} = "bc glibc-utils"
Signature · 1 line
2.5.0
Re: [PATCH 3/3] kernel-devsrc: restructure for out of tree (and on target) module builds
Sorry, but this breaks on ARM:
ERROR: kernel-devsrc-1.0-r0 do_install: Function failed: do_install (log
file is located at /home/pokybuild/yocto-autobuilder/yocto-worker/nightly-arm/build/build/tmp/work/qemuarm-poky-linux-gnueabi/kernel-devsrc/1.0-r0/temp/log.do_install.25822)
ERROR: Logfile of failure stored in:/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-arm/build/build/tmp/work/qemuarm-poky-linux-gnueabi/kernel-devsrc/1.0-r0/temp/log.do_install.25822 Log data follows:
| DEBUG: Executing shell function do_install | cp: with --parents, the destination must be a directory | Try 'cp --help' for more information. | WARNING:
/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-arm/build/build/tmp/work/qemuarm-poky-linux-gnueabi/kernel-devsrc/1.0-r0/temp/run.do_install.25822:1 exit 1 from 'rm -rf $kerneldir/build/include'
| ERROR: Function failed: do_install (log file is located at /home/pokybuild/yocto-autobuilder/yocto-worker/nightly-arm/build/build/tmp/work/qemuarm-poky-linux-gnueabi/kernel-devsrc/1.0-r0/temp/log.do_install.25822)
Ross
Quoted 271 lines · Bruce Ashfield
The existing kernel-devsrc package starts with a full copy of the kernel source and then starts to strip out elements that are not required.
This results in extra time (I/O) and extra space being taken up in the final package. The main purpose of the kernel-devsrc package has been to build modules against the running kernel, not to include a full copy of the source code for re-building the kernel. The end result was a 600M kernel-devsrc package.
This restructuring of the package uses an approach similar to other distros, where the kernel-devsrc package is for building against the running kernel and uses a curated set of copied infrastructure, versus a mass copy of the entire kernel.
The differences in this approach versus other is largely due to the architecture support and the split build/source directory of the kernel.
The result is a kernel-devsrc package of about 10M, which is capable of running "make scripts" and compiling kernel modules against the running kernel.
Along with the changes to the copying of the infrascture, we also have the following changes:
- a better/more explicit listing of dependencies for on-target builds of "make scripts" or "make
modules_prepare"- The kernel source is installed into /lib/modules/<version>/build and a symlink created from
/usr/src/kernelto the new location. This aligns with the standard location for module support code- There is also a symlink from /lib/modules/<version>/source -> build to reserve a spot for a new package that is simply the kernel source. That package is not part of this update.
[YOCTO #12535]
Signed-off-by Bruce Ashfield <[email protected]>--- meta/recipes-kernel/linux/kernel-devsrc.bb | 178 ++++++++++++++++++++++------- 1 file changed, 138 insertions(+), 40 deletions(-)meta/recipes-kernel/linux/kernel-devsrc.bb +2
-7@@ -30,50 +30,148 @@ do_populate_sysroot[noexec] = "1" S = "${STAGING_KERNEL_DIR}" B = "${STAGING_KERNEL_BUILDDIR}" -KERNEL_VERSION = "${@get_kernelversion_headers('${S}')}" - PACKAGE_ARCH = "${MACHINE_ARCH}" +KERNEL_BUILD_ROOT="/lib/modules/" + do_install() { - kerneldir=${D}${KERNEL_SRC_PATH} - install -d $kerneldir - - # - # Copy the staging dir source (and module build support) into thedevsrc structure.
- # We can keep this copy simple and take everything, since a we'll
clean up any buildmeta/recipes-kernel/linux/kernel-devsrc.bb +0
-7- # artifacts afterwards, and the extra i/o is not significant - # - cd ${B} - find . -type d -name '.git*' -prune -o -path '.debug' -prune -o -type f -print0 | cpio --null -pdlu $kerneldir - cd ${S} - find . -type d -name '.git*' -prune -o -type d -name'.kernel-meta' -prune -o -type f -print0 | cpio --null -pdlu $kerneldir
meta/recipes-kernel/linux/kernel-devsrc.bb +0
-2- - # Explicitly set KBUILD_OUTPUT to ensure that the image directoryis cleaned and not
- # The main build artifacts. We clean the directory to avoid QA
errors on mismatchedmeta/recipes-kernel/linux/kernel-devsrc.bb +0
-3- # architecture (since scripts and helpers are native format). - KBUILD_OUTPUT="$kerneldir" - oe_runmake -C $kerneldir CC="${KERNEL_CC}" LD="${KERNEL_LD}"clean
_mrproper_scriptsmeta/recipes-kernel/linux/kernel-devsrc.bb +0
-11- # make clean generates an absolute path symlink called "source" - # in $kerneldir points to $kerneldir, which doesn't make any - # sense, so remove it. - if [ -L $kerneldir/source ]; then - bbnote "Removing $kerneldir/source symlink" - rm -f $kerneldir/source - fi - - # As of Linux kernel version 3.0.1, the clean target removes - # arch/powerpc/lib/crtsavres.o which is present in - # KBUILD_LDFLAGS_MODULE, making it required to build externalmodules.
meta/recipes-kernel/linux/kernel-devsrc.bb +0
-3- if [ ${ARCH} = "powerpc" ]; then - mkdir -p $kerneldir/arch/powerpc/lib/ - cp ${B}/arch/powerpc/lib/crtsavres.o
$kerneldir/arch/powerpc/lib/crtsavres.ometa/recipes-kernel/linux/kernel-devsrc.bb +26
-3- fi - - chown -R root:root ${D} + kerneldir=${D}${KERNEL_BUILD_ROOT}${KERNEL_VERSION} + install -d $kerneldir + + # create the directory structure + rm -f $kerneldir/build + rm -f $kerneldir/source + mkdir -p $kerneldir/build + + # for compatibility with some older variants of this package, we + # create a /usr/src/kernel symlink to /lib/modules/<version>/source + mkdir -p ${D}/usr/src + ( + cd ${D}/usr/src + ln -s ${KERNEL_BUILD_ROOT}${KERNEL_VERSION}/source kernel + ) + + # for on target purposes, we unify build and source + ( + cd $kerneldir + ln -s build source + ) + + # first copy everything + ( + cd ${S} + cp --parents $(find -type f -name "Makefile*" -o -name"Kconfig*") $kerneldir/build
meta/recipes-kernel/linux/kernel-devsrc.bb +21
-0+ ) + + # then drop all but the needed Makefiles/Kconfig files + rm -rf $kerneldir/build/Documentation + rm -rf $kerneldir/build/scripts + rm -rf $kerneldir/build/include + + # now copy in parts from the build that we'll need later + ( + cd ${B} + + cp Module.symvers $kerneldir/build + cp System.map* $kerneldir/build + if [ -s Module.markers ]; then + cp Module.markers $kerneldir/build + fi + + cp .config $kerneldir/build + + # TODO: this scripts copy will likely blow up QA, so for now, we + # require a more complex 'make scripts' to restore these,versus
meta/recipes-kernel/linux/kernel-devsrc.bb +19
-0+ # copying them here. Left as a reference to indicate that we + # know the scripts must be dealt with. + # cp -a scripts $kerneldir/build + + if [ -f tools/objtool/objtool ]; then + cp -a tools/objtool/objtool $kerneldir/build/tools/objtool/ + fi + if [ -d arch/${ARCH}/scripts ]; then + cp -a arch/${ARCH}/scripts $kerneldir/build/arch/${ARCH} + fi + if [ -f arch/${ARCH}/*lds ]; then + cp -a arch/${ARCH}/*lds $kerneldir/build/arch/${ARCH} + fi + + rm -f $kerneldir/build/scripts/*.o + rm -f $kerneldir/build/scripts/*/*.o + + if [ "${ARCH}" = "powerpc" ]; then + cp -a --parents arch/powerpc/lib/crtsavres.[So]$kerneldir/build/
meta/recipes-kernel/linux/kernel-devsrc.bb +15
-0+ fi + + cp -a include $kerneldir/build/include + ) + + # now grab the chunks from the source tree that we need + ( + cd ${S} + + cp -a scripts $kerneldir/build + if [ "${ARCH}" = "arm64" ]; then + # arch/arm64/include/asm/xen references arch/arm + cp -a --parents arch/arm/include/asm/xen $kerneldir/build/ + # arch/arm64/include/asm/opcodes.h references arch/arm + cp -a --parents arch/arm/include/asm/opcodes.h$kerneldir/build/
meta/recipes-kernel/linux/kernel-devsrc.bb +3
-0+ fi + + # include the machine specific headers for ARM variants, ifavailable.
meta/recipes-kernel/linux/kernel-devsrc.bb +5
-0+ if [ "${ARCH}" = "arm" ]; then + cp -a --parents arch/${ARCH}/mach-*/include $kerneldir/build/ + + # include a few files for 'make prepare' + cp -a --parents arch/arm/tools/gen-mach-types$RPM_BUILD_ROOT/lib/modules/$KernelVer/build/
+ cp -a --parentsarch/arm/tools/mach-types
$RPM_BUILD_ROOT/lib/modules/$KernelVer/build/meta/recipes-kernel/linux/kernel-devsrc.bb +11
-0+ fi + + if [ -d arch/${ARCH}/include ]; then + cp -a --parents arch/${ARCH}/include $kerneldir/build/ + fi + + cp -a include $kerneldir/build + + if [ "${ARCH}" = "x86" ]; then + # files for 'make prepare' to succeed with kernel-devel + cp -a --parents arch/x86/entry/syscalls/syscall_32.tbl$kerneldir/build/
+ cp -a --parentsarch/x86/entry/syscalls/syscalltbl.sh
$kerneldir/build/
+ cp -a --parentsarch/x86/entry/syscalls/syscallhdr.sh
$kerneldir/build/
+ cp -a --parentsarch/x86/entry/syscalls/syscall_64.tbl
$kerneldir/build/meta/recipes-kernel/linux/kernel-devsrc.bb +4
-0+ cp -a --parents arch/x86/tools/relocs_32.c $kerneldir/build/ + cp -a --parents arch/x86/tools/relocs_64.c $kerneldir/build/ + cp -a --parents arch/x86/tools/relocs.c $kerneldir/build/ + cp -a --parents arch/x86/tools/relocs_common.c$kerneldir/build/
meta/recipes-kernel/linux/kernel-devsrc.bb +2
-0+ cp -a --parents arch/x86/tools/relocs.h $kerneldir/build/ + cp -a --parents tools/include/tools/le_byteshift.h$kerneldir/build/
+ cp -a --parentstools/include/tools/be_byteshift.h
$kerneldir/build/
+ cp -a --parentsarch/x86/purgatory/purgatory.c
$kerneldir/build/meta/recipes-kernel/linux/kernel-devsrc.bb +5
-0+ cp -a --parents arch/x86/purgatory/sha256.h $kerneldir/build/ + cp -a --parents arch/x86/purgatory/sha256.c $kerneldir/build/ + cp -a --parents arch/x86/purgatory/stack.S $kerneldir/build/ + cp -a --parents arch/x86/purgatory/string.c $kerneldir/build/ + cp -a --parents arch/x86/purgatory/setup-x86_64.S$kerneldir/build/
meta/recipes-kernel/linux/kernel-devsrc.bb +8
-0+ cp -a --parents arch/x86/purgatory/entry64.S $kerneldir/build/ + cp -a --parents arch/x86/boot/string.h $kerneldir/build/ + cp -a --parents arch/x86/boot/string.c $kerneldir/build/ + cp -a --parents arch/x86/boot/ctype.h $kerneldir/build/ + fi + ) + + # Make sure the Makefile and version.h have a matching timestamp sothat
meta/recipes-kernel/linux/kernel-devsrc.bb +2
-0+ # external modules can be built + touch -r $kerneldir/build/Makefile $kerneldir/build/include/
generated/uapi/linux/version.hmeta/recipes-kernel/linux/kernel-devsrc.bb +2
-0+ + # Copy .config to include/config/auto.conf so "make prepare" isunnecessary.
meta/recipes-kernel/linux/kernel-devsrc.bb +7
-4+ cp $kerneldir/build/.config $kerneldir/build/include/config/auto.conf + + chown -R root:root ${D} } + # Ensure we don't race against "make scripts" during cpio do_install[lockfiles] = "${TMPDIR}/kernel-scripts.lock" -PACKAGES = "kernel-devsrc" -FILES_${PN} = "${KERNEL_SRC_PATH}" -RDEPENDS_${PN} = "bc" +FILES_${PN} = "${KERNEL_BUILD_ROOT} ${KERNEL_SRC_PATH}" +FILES_${PN}-dbg += "${KERNEL_BUILD_ROOT}*/build/scripts/*/.debug/*" +RDEPENDS_${PN} = "bc glibc-utils" --2.5.0
Re: [PATCH 3/3] kernel-devsrc: restructure for out of tree (and on target) module builds
Unfortunately, I can't reproduce that here.
This has been built and tested on all arches by myself and others, but I can try again .. just no promises when I'll get back to it.
Bruce
Quoted 298 lines · Ross
Sorry, but this breaks on ARM:
ERROR: kernel-devsrc-1.0-r0
do_install: Function failed:do_install(log file is located at/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-arm/build/build/tmp/work/qemuarm-poky-linux-gnueabi/kernel-devsrc/1.0-r0/temp/log.do_install.25822)
ERROR: Logfile of failure stored in:/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-arm/build/build/tmp/work/qemuarm-poky-linux-gnueabi/kernel-devsrc/1.0-r0/temp/log.do_install.25822
Log data follows:| DEBUG: Executing shell function do_install | cp: with --parents, the destination must be a directory | Try 'cp --help' for more information. | WARNING: /home/pokybuild/yocto-autobuilder/yocto-worker/nightly-arm/build/build/tmp/work/qemuarm-poky-linux-gnueabi/kernel-devsrc/1.0-r0/temp/run.do_install.25822:1 exit 1 from 'rm -rf $kerneldir/build/include' | ERROR: Function failed: do_install (log file is located at /home/pokybuild/yocto-autobuilder/yocto-worker/nightly-arm/build/build/tmp/work/qemuarm-poky-linux-gnueabi/kernel-devsrc/1.0-r0/temp/log.do_install.25822)Ross
On 28 February 2018 at 02:06, Bruce Ashfield <[email protected] <mailto:[email protected]>> wrote:
The existing kernel-devsrc package starts with a full copy of the kernel source and then starts to strip out elements that are not required. This results in extra time (I/O) and extra space being taken up in the final package. The main purpose of the kernel-devsrc package has been to build modules against the running kernel, not to include a full copy of the source code for re-building the kernel. The end result was a 600M kernel-devsrc package. This restructuring of the package uses an approach similar to other distros, where the kernel-devsrc package is for building against the running kernel and uses a curated set of copied infrastructure, versus a mass copy of the entire kernel. The differences in this approach versus other is largely due to the architecture support and the split build/source directory of the kernel. The result is a kernel-devsrc package of about 10M, which is capable of running "make scripts" and compiling kernel modules against the running kernel. Along with the changes to the copying of the infrascture, we also have the following changes: - a better/more explicit listing of dependencies for on-target builds of "make scripts" or "make modules_prepare" - The kernel source is installed into /lib/modules/<version>/build and a symlink created from /usr/src/kernel to the new location. This aligns with the standard location for module support code - There is also a symlink from /lib/modules/<version>/source -> build to reserve a spot for a new package that is simply the kernel source. That package is not part of this update. [YOCTO #12535] Signed-off-by: Bruce Ashfield <[email protected] <mailto:[email protected]>> --- meta/recipes-kernel/linux/kernel-devsrc.bb <http://kernel-devsrc.bb> | 178 ++++++++++++++++++++++------- 1 file changed, 138 insertions(+), 40 deletions(-) diff --git a/meta/recipes-kernel/linux/kernel-devsrc.bb <http://kernel-devsrc.bb> b/meta/recipes-kernel/linux/kernel-devsrc.bb <http://kernel-devsrc.bb> index c1b5b7786d7c..f55b115e0936 100644 --- a/meta/recipes-kernel/linux/kernel-devsrc.bb <http://kernel-devsrc.bb> +++ b/meta/recipes-kernel/linux/kernel-devsrc.bb <http://kernel-devsrc.bb> @@ -30,50 +30,148 @@ do_populate_sysroot[noexec] = "1" S = "${STAGING_KERNEL_DIR}" B = "${STAGING_KERNEL_BUILDDIR}" -KERNEL_VERSION = "${@get_kernelversion_headers('${S}')}" - PACKAGE_ARCH = "${MACHINE_ARCH}" +KERNEL_BUILD_ROOT="/lib/modules/" + do_install() { - kerneldir=${D}${KERNEL_SRC_PATH} - install -d $kerneldir - - # - # Copy the staging dir source (and module build support) into the devsrc structure. - # We can keep this copy simple and take everything, since a we'll clean up any build - # artifacts afterwards, and the extra i/o is not significant - # - cd ${B} - find . -type d -name '.git*' -prune -o -path '.debug' -prune -o -type f -print0 | cpio --null -pdlu $kerneldir - cd ${S} - find . -type d -name '.git*' -prune -o -type d -name '.kernel-meta' -prune -o -type f -print0 | cpio --null -pdlu $kerneldir - - # Explicitly set KBUILD_OUTPUT to ensure that the image directory is cleaned and not - # The main build artifacts. We clean the directory to avoid QA errors on mismatched - # architecture (since scripts and helpers are native format). - KBUILD_OUTPUT="$kerneldir" - oe_runmake -C $kerneldir CC="${KERNEL_CC}" LD="${KERNEL_LD}" clean _mrproper_scripts - # make clean generates an absolute path symlink called "source" - # in $kerneldir points to $kerneldir, which doesn't make any - # sense, so remove it. - if [ -L $kerneldir/source ]; then - bbnote "Removing $kerneldir/source symlink" - rm -f $kerneldir/source - fi - - # As of Linux kernel version 3.0.1, the clean target removes - # arch/powerpc/lib/crtsavres.o which is present in - # KBUILD_LDFLAGS_MODULE, making it required to build external modules. - if [ ${ARCH} = "powerpc" ]; then - mkdir -p $kerneldir/arch/powerpc/lib/ - cp ${B}/arch/powerpc/lib/crtsavres.o $kerneldir/arch/powerpc/lib/crtsavres.o - fi - - chown -R root:root ${D} + kerneldir=${D}${KERNEL_BUILD_ROOT}${KERNEL_VERSION} + install -d $kerneldir + + # create the directory structure + rm -f $kerneldir/build + rm -f $kerneldir/source + mkdir -p $kerneldir/build + + # for compatibility with some older variants of this package, we + # create a /usr/src/kernel symlink to /lib/modules/<version>/source + mkdir -p ${D}/usr/src + ( + cd ${D}/usr/src + ln -s ${KERNEL_BUILD_ROOT}${KERNEL_VERSION}/source kernel + ) + + # for on target purposes, we unify build and source + ( + cd $kerneldir + ln -s build source + ) + + # first copy everything + ( + cd ${S} + cp --parents $(find -type f -name "Makefile*" -o -name "Kconfig*") $kerneldir/build + ) + + # then drop all but the needed Makefiles/Kconfig files + rm -rf $kerneldir/build/Documentation + rm -rf $kerneldir/build/scripts + rm -rf $kerneldir/build/include + + # now copy in parts from the build that we'll need later + ( + cd ${B} + + cp Module.symvers $kerneldir/build + cp System.map* $kerneldir/build + if [ -s Module.markers ]; then + cp Module.markers $kerneldir/build + fi + + cp .config $kerneldir/build + + # TODO: this scripts copy will likely blow up QA, so for now, we + # require a more complex 'make scripts' to restore these, versus + # copying them here. Left as a reference to indicate that we + # know the scripts must be dealt with. + # cp -a scripts $kerneldir/build + + if [ -f tools/objtool/objtool ]; then + cp -a tools/objtool/objtool $kerneldir/build/tools/objtool/ + fi + if [ -d arch/${ARCH}/scripts ]; then + cp -a arch/${ARCH}/scripts $kerneldir/build/arch/${ARCH} + fi + if [ -f arch/${ARCH}/*lds ]; then + cp -a arch/${ARCH}/*lds $kerneldir/build/arch/${ARCH} + fi + + rm -f $kerneldir/build/scripts/*.o + rm -f $kerneldir/build/scripts/*/*.o + + if [ "${ARCH}" = "powerpc" ]; then + cp -a --parents arch/powerpc/lib/crtsavres.[So] $kerneldir/build/ + fi + + cp -a include $kerneldir/build/include + ) + + # now grab the chunks from the source tree that we need + ( + cd ${S} + + cp -a scripts $kerneldir/build + if [ "${ARCH}" = "arm64" ]; then + # arch/arm64/include/asm/xen references arch/arm + cp -a --parents arch/arm/include/asm/xen $kerneldir/build/ + # arch/arm64/include/asm/opcodes.h references arch/arm + cp -a --parents arch/arm/include/asm/opcodes.h $kerneldir/build/ + fi + + # include the machine specific headers for ARM variants, if available. + if [ "${ARCH}" = "arm" ]; then + cp -a --parents arch/${ARCH}/mach-*/include $kerneldir/build/ + + # include a few files for 'make prepare' + cp -a --parents arch/arm/tools/gen-mach-types $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ + cp -a --parents arch/arm/tools/mach-types $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/ + fi + + if [ -d arch/${ARCH}/include ]; then + cp -a --parents arch/${ARCH}/include $kerneldir/build/ + fi + + cp -a include $kerneldir/build + + if [ "${ARCH}" = "x86" ]; then + # files for 'make prepare' to succeed with kernel-devel + cp -a --parents arch/x86/entry/syscalls/syscall_32.tbl $kerneldir/build/ + cp -a --parents arch/x86/entry/syscalls/syscalltbl.sh $kerneldir/build/ + cp -a --parents arch/x86/entry/syscalls/syscallhdr.sh $kerneldir/build/ + cp -a --parents arch/x86/entry/syscalls/syscall_64.tbl $kerneldir/build/ + cp -a --parents arch/x86/tools/relocs_32.c $kerneldir/build/ + cp -a --parents arch/x86/tools/relocs_64.c $kerneldir/build/ + cp -a --parents arch/x86/tools/relocs.c $kerneldir/build/ + cp -a --parents arch/x86/tools/relocs_common.c $kerneldir/build/ + cp -a --parents arch/x86/tools/relocs.h $kerneldir/build/ + cp -a --parents tools/include/tools/le_byteshift.h $kerneldir/build/ + cp -a --parents tools/include/tools/be_byteshift.h $kerneldir/build/ + cp -a --parents arch/x86/purgatory/purgatory.c $kerneldir/build/ + cp -a --parents arch/x86/purgatory/sha256.h $kerneldir/build/ + cp -a --parents arch/x86/purgatory/sha256.c $kerneldir/build/ + cp -a --parents arch/x86/purgatory/stack.S $kerneldir/build/ + cp -a --parents arch/x86/purgatory/string.c $kerneldir/build/ + cp -a --parents arch/x86/purgatory/setup-x86_64.S $kerneldir/build/ + cp -a --parents arch/x86/purgatory/entry64.S $kerneldir/build/ + cp -a --parents arch/x86/boot/string.h $kerneldir/build/ + cp -a --parents arch/x86/boot/string.c $kerneldir/build/ + cp -a --parents arch/x86/boot/ctype.h $kerneldir/build/ + fi + ) + + # Make sure the Makefile and version.h have a matching timestamp so that + # external modules can be built + touch -r $kerneldir/build/Makefile $kerneldir/build/include/generated/uapi/linux/version.h + + # Copy .config to include/config/auto.conf so "make prepare" is unnecessary. + cp $kerneldir/build/.config $kerneldir/build/include/config/auto.conf + + chown -R root:root ${D} } + # Ensure we don't race against "make scripts" during cpio do_install[lockfiles] = "${TMPDIR}/kernel-scripts.lock" -PACKAGES = "kernel-devsrc" -FILES_${PN} = "${KERNEL_SRC_PATH}" -RDEPENDS_${PN} = "bc" +FILES_${PN} = "${KERNEL_BUILD_ROOT} ${KERNEL_SRC_PATH}" +FILES_${PN}-dbg += "${KERNEL_BUILD_ROOT}*/build/scripts/*/.debug/*" +RDEPENDS_${PN} = "bc glibc-utils" -- 2.5.0
Re: [PATCH 3/3] kernel-devsrc: restructure for out of tree (and on target) module builds
Quoted 4 lines · Bruce Ashfield
Unfortunately, I can't reproduce that here.
This has been built and tested on all arches by myself and others, but I can try again .. just no promises when I'll get back to it.
Ahaha. 32 bit ARM with a little bit of a manual hack on my machine and it triggered.
64 bit works fine. Will send a v2 shortly.
Bruce
Quoted 306 lines
Bruce
Quoted 301 lines · Ross
Sorry, but this breaks on ARM:
ERROR: kernel-devsrc-1.0-r0
do_install: Function failed:do_install(log file is located at/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-arm/build/build/tmp/work/qemuarm-poky-linux-gnueabi/kernel-devsrc/1.0-r0/temp/log.do_install.25822)ERROR: Logfile of failure stored in:
/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-arm/build/build/tmp/work/qemuarm-poky-linux-gnueabi/kernel-devsrc/1.0-r0/temp/log.do_install.25822Log data follows:
| DEBUG: Executing shell function do_install | cp: with --parents, the destination must be a directory | Try 'cp --help' for more information. | WARNING: /home/pokybuild/yocto-autobuilder/yocto-worker/nightly-arm/build/build/tmp/work/qemuarm-poky-linux-gnueabi/kernel-devsrc/1.0-r0/temp/run.do_install.25822:1 exit 1 from 'rm -rf $kerneldir/build/include' | ERROR: Function failed: do_install (log file is located at /home/pokybuild/yocto-autobuilder/yocto-worker/nightly-arm/build/build/tmp/work/qemuarm-poky-linux-gnueabi/kernel-devsrc/1.0-r0/temp/log.do_install.25822)Ross
On 28 February 2018 at 02:06, Bruce Ashfield <[email protected] <mailto:[email protected]>> wrote:
The existing kernel-devsrc package starts with a full copy of the kernel source and then starts to strip out elements that are not required.
This results in extra time (I/O) and extra space being taken up in the final package. The main purpose of the kernel-devsrc package has been to build modules against the running kernel, not to include a full copy of the source code for re-building the kernel. The end result was a 600M kernel-devsrc package.
This restructuring of the package uses an approach similar to other distros, where the kernel-devsrc package is for building against the running kernel and uses a curated set of copied infrastructure, versus a mass copy of the entire kernel.
The differences in this approach versus other is largely due to the architecture support and the split build/source directory of the kernel.
The result is a kernel-devsrc package of about 10M, which is capable of running "make scripts" and compiling kernel modules against the running kernel.
Along with the changes to the copying of the infrascture, we also have the following changes:
- a better/more explicit listing of dependencies for on-target builds of "make scripts" or "make
modules_prepare"- The kernel source is installed into /lib/modules/<version>/build and a symlink created from
/usr/src/kernelto the new location. This aligns with the standard location for module support code- There is also a symlink from /lib/modules/<version>/source -> build to reserve a spot for a new package that is simply the kernel source. That package is not part of this update.
[YOCTO #12535]
Signed-off-by Bruce Ashfield <[email protected]<mailto:[email protected]>>
---
meta/recipes-kernel/linux/kernel-devsrc.bb
<http://kernel-devsrc.bb> | 178 ++++++++++++++++++++++-------1 file changed, 138 insertions(+), 40 deletions(-)diff --git a/meta/recipes-kernel/linux/kernel-devsrc.bb
<http://kernel-devsrc.bb>
b/meta/recipes-kernel/linux/kernel-devsrc.bb <http://kernel-devsrc.bb>
indexc1b5b7786d7c..f55b115e0936100644
--- a/meta/recipes-kernel/linux/kernel-devsrc.bb
<http://kernel-devsrc.bb>
+++ b/meta/recipes-kernel/linux/kernel-devsrc.bb
<http://kernel-devsrc.bb>
@@ -30,50 +30,148 @@ do_populate_sysroot[noexec] = "1"
S = "${STAGING_KERNEL_DIR}"
B = "${STAGING_KERNEL_BUILDDIR}"-KERNEL_VERSION = "${@get_kernelversion_headers('${S}')}" -
PACKAGE_ARCH = "${MACHINE_ARCH}"+KERNEL_BUILD_ROOT="/lib/modules/"
+
do_install() {
- kerneldir=${D}${KERNEL_SRC_PATH}
- install -d $kerneldir
-
- #
- # Copy the staging dir source (and module build support) into the devsrc structure.
- # We can keep this copy simple and take everything, since a we'll clean up any build
- # artifacts afterwards, and the extra i/o is not significant - #
- cd ${B}
- find . -type d -name '.git*' -prune -o -path '.debug' -prune -o -type f -print0 | cpio --null -pdlu $kerneldir
- cd ${S}
- find . -type d -name '.git*' -prune -o -type d -name '.kernel-meta' -prune -o -type f -print0 | cpio --null -pdlu $kerneldir -
- # Explicitly setKBUILD_OUTPUTto ensure that the image directory is cleaned and not
- # The main build artifacts. We clean the directory to avoid QA errors on mismatched
- # architecture (since scripts and helpers are native format). - KBUILD_OUTPUT="$kerneldir"
-oe_runmake-C $kerneldir CC="${KERNEL_CC}" LD="${KERNEL_LD}" clean_mrproper_scripts
- # make clean generates an absolute path symlink called "source" - # in $kerneldir points to $kerneldir, which doesn't make any - # sense, so remove it.
- if [ -L $kerneldir/source ]; then
- bbnote "Removing $kerneldir/source symlink"
- rm -f $kerneldir/source
- fi
-
- # As of Linux kernel version 3.0.1, the clean target removes - #arch/powerpc/lib/crtsavres.owhich is present in - #KBUILD_LDFLAGS_MODULE, making it required to build external modules.
- if [ ${ARCH} = "powerpc" ]; then
- mkdir -p $kerneldir/arch/powerpc/lib/
- cp${B}/arch/powerpc/lib/crtsavres.o$kerneldir/arch/powerpc/lib/crtsavres.o
- fi
-
- chown -R root:root ${D}
+ kerneldir=${D}${KERNEL_BUILD_ROOT}${KERNEL_VERSION}
+ install -d $kerneldir
+
+ # create the directory structure
+ rm -f $kerneldir/build
+ rm -f $kerneldir/source
+ mkdir -p $kerneldir/build
+
+ # for compatibility with some older variants of this package, we + # create a/usr/src/kernelsymlink to /lib/modules/<version>/source
+ mkdir -p ${D}/usr/src
+ (
+ cd ${D}/usr/src
+ ln -s ${KERNEL_BUILD_ROOT}${KERNEL_VERSION}/source kernel + )
+
+ # for on target purposes, we unify build and source
+ (
+ cd $kerneldir
+ ln -s build source
+ )
+
+ # first copy everything
+ (
+ cd ${S}
+ cp --parents $(find -type f -name "Makefile*" -o -name "Kconfig*") $kerneldir/build
+ )
+
+ # then drop all but the needed Makefiles/Kconfig files + rm -rf $kerneldir/build/Documentation
+ rm -rf $kerneldir/build/scripts
+ rm -rf $kerneldir/build/include
+
+ # now copy in parts from the build that we'll need later + (
+ cd ${B}
+
+ cp Module.symvers $kerneldir/build
+ cp System.map* $kerneldir/build
+ if [ -s Module.markers ]; then
+ cp Module.markers $kerneldir/build
+ fi
+
+ cp .config $kerneldir/build
+
+ # TODO: this scripts copy will likely blow up QA, so for now, we + # require a more complex 'make scripts' to restore these, versus
+ # copying them here. Left as a reference to indicate that we
+ # know the scripts must be dealt with.
+ # cp -a scripts $kerneldir/build
+
+ if [ -ftools/objtool/objtool]; then
+ cp -atools/objtool/objtool$kerneldir/build/tools/objtool/ + fi
+ if [ -darch/${ARCH}/scripts]; then
+ cp -aarch/${ARCH}/scripts$kerneldir/build/arch/${ARCH} + fi
+ if [ -farch/${ARCH}/*lds]; then
+ cp -aarch/${ARCH}/*lds$kerneldir/build/arch/${ARCH} + fi
+
+ rm -f $kerneldir/build/scripts/*.o
+ rm -f $kerneldir/build/scripts/*/*.o
+
+ if [ "${ARCH}" = "powerpc" ]; then
+ cp -a --parents arch/powerpc/lib/crtsavres.[So] $kerneldir/build/
+ fi
+
+ cp -a include $kerneldir/build/include
+ )
+
+ # now grab the chunks from the source tree that we need + (
+ cd ${S}
+
+ cp -a scripts $kerneldir/build
+ if [ "${ARCH}" = "arm64" ]; then
+ #arch/arm64/include/asm/xenreferencesarch/arm+ cp -a --parentsarch/arm/include/asm/xen$kerneldir/build/ + #arch/arm64/include/asm/opcodes.hreferencesarch/arm+ cp -a --parentsarch/arm/include/asm/opcodes.h$kerneldir/build/
+ fi
+
+ # include the machine specific headers for ARM variants, if available.
+ if [ "${ARCH}" = "arm" ]; then
+ cp -a --parentsarch/${ARCH}/mach-*/include$kerneldir/build/
+
+ # include a few files for 'make prepare'
+ cp -a --parentsarch/arm/tools/gen-mach-types$RPM_BUILD_ROOT/lib/modules/$KernelVer/build/
+ cp -a --parentsarch/arm/tools/mach-types$RPM_BUILD_ROOT/lib/modules/$KernelVer/build/
+ fi
+
+ if [ -darch/${ARCH}/include]; then
+ cp -a --parentsarch/${ARCH}/include$kerneldir/build/ + fi
+
+ cp -a include $kerneldir/build
+
+ if [ "${ARCH}" = "x86" ]; then
+ # files for 'make prepare' to succeed with kernel-devel + cp -a --parentsarch/x86/entry/syscalls/syscall_32.tbl$kerneldir/build/
+ cp -a --parentsarch/x86/entry/syscalls/syscalltbl.sh$kerneldir/build/
+ cp -a --parentsarch/x86/entry/syscalls/syscallhdr.sh$kerneldir/build/
+ cp -a --parentsarch/x86/entry/syscalls/syscall_64.tbl$kerneldir/build/
+ cp -a --parentsarch/x86/tools/relocs_32.c$kerneldir/build/ + cp -a --parentsarch/x86/tools/relocs_64.c$kerneldir/build/ + cp -a --parentsarch/x86/tools/relocs.c$kerneldir/build/ + cp -a --parentsarch/x86/tools/relocs_common.c$kerneldir/build/
+ cp -a --parentsarch/x86/tools/relocs.h$kerneldir/build/ + cp -a --parentstools/include/tools/le_byteshift.h$kerneldir/build/
+ cp -a --parentstools/include/tools/be_byteshift.h$kerneldir/build/
+ cp -a --parentsarch/x86/purgatory/purgatory.c$kerneldir/build/
+ cp -a --parentsarch/x86/purgatory/sha256.h$kerneldir/build/
+ cp -a --parentsarch/x86/purgatory/sha256.c$kerneldir/build/
+ cp -a --parentsarch/x86/purgatory/stack.S$kerneldir/build/ + cp -a --parentsarch/x86/purgatory/string.c$kerneldir/build/
+ cp -a --parentsarch/x86/purgatory/setup-x86_64.S$kerneldir/build/
+ cp -a --parentsarch/x86/purgatory/entry64.S$kerneldir/build/
+ cp -a --parentsarch/x86/boot/string.h$kerneldir/build/ + cp -a --parentsarch/x86/boot/string.c$kerneldir/build/ + cp -a --parentsarch/x86/boot/ctype.h$kerneldir/build/ + fi
+ )
+
+ # Make sure theMakefileandversion.hhave a matching timestamp so that
+ # external modules can be built
+ touch -r $kerneldir/build/Makefile$kerneldir/build/include/generated/uapi/linux/version.h
+
+ # Copy .config toinclude/config/auto.confso "make prepare" is unnecessary.
+ cp $kerneldir/build/.config$kerneldir/build/include/config/auto.conf
+
+ chown -R root:root ${D}
}
+
# Ensure we don't race against "make scripts" during cpio do_install[lockfiles] = "${TMPDIR}/kernel-scripts.lock"-PACKAGES = "kernel-devsrc"
-FILES_${PN} = "${KERNEL_SRC_PATH}"
-RDEPENDS_${PN} = "bc"
+FILES_${PN} = "${KERNEL_BUILD_ROOT} ${KERNEL_SRC_PATH}" +FILES_${PN}-dbg += "${KERNEL_BUILD_ROOT}*/build/scripts/*/.debug/*" +RDEPENDS_${PN} = "bc glibc-utils"
--
2.5.0