From ea12c46fe8748fb6606c603d463075a8624e6563 Mon Sep 17 00:00:00 2001 From: Joe Slater Date: Tue, 20 Feb 2018 11:25:16 -0500 Subject: make-mod-scripts: change how some kernel module tools are built Remove do_make_scripts() from module-base.bbclass and put functionality in a recipe. This will build the scripts only once instead of each time an external module is built. [YOCTO #12228] Signed-off-by: Joe Slater Signed-off-by: Bruce Ashfield Signed-off-by: Richard Purdie --- meta/classes/module-base.bbclass | 12 +++------- meta/classes/module.bbclass | 4 ---- .../make-mod-scripts/make-mod-scripts_1.0.bb | 28 ++++++++++++++++++++++ 3 files changed, 31 insertions(+), 13 deletions(-) create mode 100644 meta/recipes-kernel/make-mod-scripts/make-mod-scripts_1.0.bb (limited to 'meta') diff --git a/meta/classes/module-base.bbclass b/meta/classes/module-base.bbclass index f851b85163..27bd69ff33 100644 --- a/meta/classes/module-base.bbclass +++ b/meta/classes/module-base.bbclass @@ -1,7 +1,8 @@ inherit kernel-arch -# This is instead of DEPENDS = "virtual/kernel" -do_configure[depends] += "virtual/kernel:do_compile_kernelmodules" +# We do the dependency this way because the output is not preserved +# in sstate, so we must force do_compile to run (once). +do_configure[depends] += "make-mod-scripts:do_compile" export OS = "${TARGET_OS}" export CROSS_COMPILE = "${TARGET_PREFIX}" @@ -18,10 +19,3 @@ KERNEL_OBJECT_SUFFIX = ".ko" # kernel modules are generally machine specific PACKAGE_ARCH = "${MACHINE_ARCH}" -# Function to ensure the kernel scripts are created. Expected to -# be called before do_compile. See module.bbclass for an example. -do_make_scripts() { - unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS - make CC="${KERNEL_CC}" LD="${KERNEL_LD}" AR="${KERNEL_AR}" \ - -C ${STAGING_KERNEL_DIR} O=${STAGING_KERNEL_BUILDDIR} scripts -} diff --git a/meta/classes/module.bbclass b/meta/classes/module.bbclass index 78d1b21dbd..e344960244 100644 --- a/meta/classes/module.bbclass +++ b/meta/classes/module.bbclass @@ -1,9 +1,5 @@ inherit module-base kernel-module-split pkgconfig -addtask make_scripts after do_prepare_recipe_sysroot before do_configure -do_make_scripts[lockfiles] = "${TMPDIR}/kernel-scripts.lock" -do_make_scripts[depends] += "virtual/kernel:do_shared_workdir" - EXTRA_OEMAKE += "KERNEL_SRC=${STAGING_KERNEL_DIR}" MODULES_INSTALL_TARGET ?= "modules_install" diff --git a/meta/recipes-kernel/make-mod-scripts/make-mod-scripts_1.0.bb b/meta/recipes-kernel/make-mod-scripts/make-mod-scripts_1.0.bb new file mode 100644 index 0000000000..6e47d09f79 --- /dev/null +++ b/meta/recipes-kernel/make-mod-scripts/make-mod-scripts_1.0.bb @@ -0,0 +1,28 @@ +SUMMARY = "Build tools needed by external modules" +LICENSE = "GPLv2" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6" + +inherit kernel-arch +inherit pkgconfig + +PACKAGE_ARCH = "${MACHINE_ARCH}" + +S = "${WORKDIR}" + +do_configure[depends] += "virtual/kernel:do_shared_workdir" +do_compile[depends] += "virtual/kernel:do_compile_kernelmodules" + +# Build some host tools under work-shared. CC, LD, and AR are probably +# not used, but this is the historical way of invoking "make scripts". +# +do_configure() { + unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS + make CC="${KERNEL_CC}" LD="${KERNEL_LD}" AR="${KERNEL_AR}" \ + -C ${STAGING_KERNEL_DIR} O=${STAGING_KERNEL_BUILDDIR} scripts +} + + +# There is no reason to build this on its own. +# +EXCLUDE_FROM_WORLD = "1" + -- cgit 1.2.3-korg