diff options
Diffstat (limited to 'meta/recipes-kernel/linux/kernel-devsrc.bb')
-rw-r--r-- | meta/recipes-kernel/linux/kernel-devsrc.bb | 94 |
1 files changed, 79 insertions, 15 deletions
diff --git a/meta/recipes-kernel/linux/kernel-devsrc.bb b/meta/recipes-kernel/linux/kernel-devsrc.bb index b68d945a8f..d39573965f 100644 --- a/meta/recipes-kernel/linux/kernel-devsrc.bb +++ b/meta/recipes-kernel/linux/kernel-devsrc.bb @@ -78,7 +78,7 @@ do_install() { cp Module.markers $kerneldir/build fi - cp .config $kerneldir/build + cp -a .config $kerneldir/build # This scripts copy blow up QA, so for now, we require a more # complex 'make scripts' to restore these, versus copying them @@ -86,6 +86,12 @@ do_install() { # be dealt with. # cp -a scripts $kerneldir/build + # although module.lds can be regenerated on target via 'make modules_prepare' + # there are several places where 'makes scripts prepare' is done, and that won't + # regenerate the file. So we copy it onto the target as a migration to using + # modules_prepare + cp -a --parents scripts/module.lds $kerneldir/build/ 2>/dev/null || : + if [ -d arch/${ARCH}/scripts ]; then cp -a arch/${ARCH}/scripts $kerneldir/build/arch/${ARCH} fi @@ -106,8 +112,21 @@ do_install() { if [ "${ARCH}" = "arm64" ]; then cp -a --parents arch/arm64/kernel/vdso/vdso.lds $kerneldir/build/ fi + if [ "${ARCH}" = "powerpc" ]; then + cp -a --parents arch/powerpc/kernel/vdso32/vdso32.lds $kerneldir/build 2>/dev/null || : + cp -a --parents arch/powerpc/kernel/vdso64/vdso64.lds $kerneldir/build 2>/dev/null || : + fi cp -a include $kerneldir/build/include + + # we don't usually copy generated files, since they can be rebuilt on the target, + # but without this file, we get a forced syncconfig run in v5.8+, which prompts and + # breaks workflows. + cp -a --parents include/generated/autoconf.h $kerneldir/build 2>/dev/null || : + + if [ -e $kerneldir/include/generated/.vdso-offsets.h.cmd ]; then + rm $kerneldir/include/generated/.vdso-offsets.h.cmd + fi ) # now grab the chunks from the source tree that we need @@ -128,11 +147,12 @@ do_install() { # extra files, just in case cp -a --parents tools/objtool/* $kerneldir/build/ - cp -a --parents tools/lib/str_error_r.c $kerneldir/build/ - cp -a --parents tools/lib/string.c $kerneldir/build/ + cp -a --parents tools/lib/* $kerneldir/build/ cp -a --parents tools/lib/subcmd/* $kerneldir/build/ cp -a --parents tools/include/* $kerneldir/build/ + + cp -a --parents $(find tools/arch/${ARCH}/ -type f) $kerneldir/build/ fi if [ "${ARCH}" = "arm64" ]; then @@ -146,7 +166,15 @@ do_install() { cp -a --parents arch/arm64/kernel/vdso/note.S $kerneldir/build/ cp -a --parents arch/arm64/kernel/vdso/gen_vdso_offsets.sh $kerneldir/build/ - cp -a --parents arch/arm64/kernel/module.lds $kerneldir/build/ + cp -a --parents arch/arm64/kernel/module.lds $kerneldir/build/ 2>/dev/null || : + + # 5.13+ needs these tools + cp -a --parents arch/arm64/tools/gen-cpucaps.awk $kerneldir/build/ 2>/dev/null || : + cp -a --parents arch/arm64/tools/cpucaps $kerneldir/build/ 2>/dev/null || : + + if [ -e $kerneldir/build/arch/arm64/tools/gen-cpucaps.awk ]; then + sed -i -e "s,#!.*awk.*,#!${USRBINPATH}/env awk," $kerneldir/build/arch/arm64/tools/gen-cpucaps.awk + fi fi if [ "${ARCH}" = "powerpc" ]; then @@ -154,6 +182,8 @@ do_install() { cp -a --parents arch/${ARCH}/kernel/syscalls/syscall.tbl $kerneldir/build/ 2>/dev/null || : cp -a --parents arch/${ARCH}/kernel/syscalls/syscalltbl.sh $kerneldir/build/ 2>/dev/null || : cp -a --parents arch/${ARCH}/kernel/syscalls/syscallhdr.sh $kerneldir/build/ 2>/dev/null || : + cp -a --parents arch/${ARCH}/kernel/vdso32/* $kerneldir/build/ 2>/dev/null || : + cp -a --parents arch/${ARCH}/kernel/vdso64/* $kerneldir/build/ 2>/dev/null || : fi # include the machine specific headers for ARM variants, if available. @@ -170,7 +200,7 @@ do_install() { cp -a --parents $SYSCALL_TOOLS $kerneldir/build/ fi - cp -a --parents arch/arm/kernel/module.lds $kerneldir/build/ + cp -a --parents arch/arm/kernel/module.lds $kerneldir/build/ 2>/dev/null || : fi if [ -d arch/${ARCH}/include ]; then @@ -185,19 +215,21 @@ do_install() { cp -a --parents tools/include/tools/be_byteshift.h $kerneldir/build/ # required for generate missing syscalls prepare phase - cp -a --parents arch/x86/entry/syscalls/syscall_32.tbl $kerneldir/build + cp -a --parents $(find arch/x86 -type f -name "syscall_32.tbl") $kerneldir/build + cp -a --parents $(find arch/arm -type f -name "*.tbl") $kerneldir/build 2>/dev/null || : 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 $(find arch/x86 -type f -name "syscall_32.tbl") $kerneldir/build/ 2>/dev/null || : + cp -a --parents $(find arch/x86 -type f -name "syscalltbl.sh") $kerneldir/build/ 2>/dev/null || : + cp -a --parents $(find arch/x86 -type f -name "syscallhdr.sh") $kerneldir/build/ 2>/dev/null || : + cp -a --parents $(find arch/x86 -type f -name "syscall_64.tbl") $kerneldir/build/ 2>/dev/null || : 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 arch/x86/tools/gen-insn-attr-x86.awk $kerneldir/build/ 2>/dev/null || : cp -a --parents arch/x86/purgatory/purgatory.c $kerneldir/build/ # 4.18 + have unified the purgatory files, so we ignore any errors if @@ -213,6 +245,10 @@ do_install() { cp -a --parents arch/x86/boot/string.c $kerneldir/build/ cp -a --parents arch/x86/boot/compressed/string.c $kerneldir/build/ 2>/dev/null || : cp -a --parents arch/x86/boot/ctype.h $kerneldir/build/ + + # objtool requires these files + cp -a --parents arch/x86/lib/inat.c $kerneldir/build/ 2>/dev/null || : + cp -a --parents arch/x86/lib/insn.c $kerneldir/build/ 2>/dev/null || : fi if [ "${ARCH}" = "mips" ]; then @@ -242,6 +278,28 @@ do_install() { # Copy .config to include/config/auto.conf so "make prepare" is unnecessary. cp $kerneldir/build/.config $kerneldir/build/include/config/auto.conf + # make sure these are at least as old as the .config, or rebuilds will trigger + touch -r $kerneldir/build/.config $kerneldir/build/include/generated/autoconf.h 2>/dev/null || : + touch -r $kerneldir/build/.config $kerneldir/build/include/config/auto.conf* 2>/dev/null || : + + if [ -e "$kerneldir/build/include/config/auto.conf.cmd" ]; then + sed -i 's/ifneq "$(CC)" ".*-linux-.*gcc.*$/ifneq "$(CC)" "gcc"/' "$kerneldir/build/include/config/auto.conf.cmd" + sed -i 's/ifneq "$(LD)" ".*-linux-.*ld.bfd.*$/ifneq "$(LD)" "ld"/' "$kerneldir/build/include/config/auto.conf.cmd" + sed -i 's/ifneq "$(AR)" ".*-linux-.*ar.*$/ifneq "$(AR)" "ar"/' "$kerneldir/build/include/config/auto.conf.cmd" + sed -i 's/ifneq "$(OBJCOPY)" ".*-linux-.*objcopy.*$/ifneq "$(OBJCOPY)" "objcopy"/' "$kerneldir/build/include/config/auto.conf.cmd" + if [ "${ARCH}" = "powerpc" ]; then + sed -i 's/ifneq "$(NM)" ".*-linux-.*nm.*$/ifneq "$(NM)" "nm --synthetic"/' "$kerneldir/build/include/config/auto.conf.cmd" + else + sed -i 's/ifneq "$(NM)" ".*-linux-.*nm.*$/ifneq "$(NM)" "nm"/' "$kerneldir/build/include/config/auto.conf.cmd" + fi + sed -i 's/ifneq "$(HOSTCXX)" ".*$/ifneq "$(HOSTCXX)" "g++"/' "$kerneldir/build/include/config/auto.conf.cmd" + sed -i 's/ifneq "$(HOSTCC)" ".*$/ifneq "$(HOSTCC)" "gcc"/' "$kerneldir/build/include/config/auto.conf.cmd" + sed -i 's/ifneq "$(CC_VERSION_TEXT)".*\(gcc.*\)"/ifneq "$(CC_VERSION_TEXT)" "\1"/' "$kerneldir/build/include/config/auto.conf.cmd" + sed -i 's/ifneq "$(srctree)" ".*"/ifneq "$(srctree)" "."/' "$kerneldir/build/include/config/auto.conf.cmd" + # we don't build against the defconfig, so make sure it isn't the trigger for syncconfig + sed -i 's/ifneq "$(KBUILD_DEFCONFIG)".*"\(.*\)"/ifneq "\1" "\1"/' "$kerneldir/build/include/config/auto.conf.cmd" + fi + # make the scripts python3 safe. We won't be running these, and if they are # left as /usr/bin/python rootfs assembly will fail, since we only have python3 # in the RDEPENDS (and the python3 package does not include /usr/bin/python) @@ -257,11 +315,17 @@ do_install() { # Ensure we don't race against "make scripts" during cpio do_install[lockfiles] = "${TMPDIR}/kernel-scripts.lock" -FILES_${PN} = "${KERNEL_BUILD_ROOT} ${KERNEL_SRC_PATH}" -FILES_${PN}-dbg += "${KERNEL_BUILD_ROOT}*/build/scripts/*/.debug/*" +FILES:${PN} = "${KERNEL_BUILD_ROOT} ${KERNEL_SRC_PATH}" +FILES:${PN}-dbg += "${KERNEL_BUILD_ROOT}*/build/scripts/*/.debug/*" -RDEPENDS_${PN} = "bc python3 flex bison ${TCLIBC}-utils" +RDEPENDS:${PN} = "bc python3 flex bison ${TCLIBC}-utils" # 4.15+ needs these next two RDEPENDS -RDEPENDS_${PN} += "openssl-dev util-linux" +RDEPENDS:${PN} += "openssl-dev util-linux" # and x86 needs a bit more for 4.15+ -RDEPENDS_${PN} += "${@bb.utils.contains('ARCH', 'x86', 'elfutils', '', d)}" +RDEPENDS:${PN} += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-dev', '', d)}" +# 5.8+ needs gcc-plugins libmpc-dev +RDEPENDS:${PN} += "gcc-plugins libmpc-dev" +# 5.13+ needs awk for arm64 +RDEPENDS:${PN}:append:aarch64 = " gawk" +# 5.13+ needs grep for powerpc +RDEPENDS:${PN}:append:powerpc = " grep" |