[OE-core] [RFC][PATCH 12/12] make-mod-scripts: change how some kernel module tools are built

Bruce Ashfield bruce.ashfield at gmail.com
Fri Feb 16 16:16:01 UTC 2018


On Thu, Feb 15, 2018 at 3:12 PM, Peter Kjellerstedt
<peter.kjellerstedt at axis.com> wrote:
>> -----Original Message-----
>> From: openembedded-core-bounces at lists.openembedded.org
>> [mailto:openembedded-core-bounces at lists.openembedded.org] On Behalf Of
>> Bruce Ashfield
>> Sent: den 26 januari 2018 14:59
>> To: richard.purdie at linuxfoundation.org
>> Cc: openembedded-core at lists.openembedded.org
>> Subject: [OE-core] [RFC][PATCH 12/12] make-mod-scripts: change how some
>> kernel module tools are built
>>
>> From: Joe Slater <jslater at windriver.com>
>>
>> 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 <jslater at windriver.com>
>> Signed-off-by: Bruce Ashfield <bruce.ashfield at windriver.com>
>> ---
>>  meta/classes/module-base.bbclass                   | 12 +++--------
>>  meta/classes/module.bbclass                        |  4 ----
>>  .../make-mod-scripts/make-mod-scripts_1.0.bb       | 24
>> ++++++++++++++++++++++
>>  3 files changed, 27 insertions(+), 13 deletions(-)
>>  create mode 100644 meta/recipes-kernel/make-mod-scripts/make-mod-
>> scripts_1.0.bb
>>
>> diff --git a/meta/classes/module-base.bbclass b/meta/classes/module-
>> base.bbclass
>> index 6fe77c01b7ed..d6762a7dffd8 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 78d1b21dbd83..e34496024434 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 000000000000..6645c873f015
>> --- /dev/null
>> +++ b/meta/recipes-kernel/make-mod-scripts/make-mod-scripts_1.0.bb
>> @@ -0,0 +1,24 @@
>> +SUMMARY = "Build tools needed by external modules"
>> +LICENSE = "GPLv2"
>> +
>> +inherit kernel-arch
>
> This recipe needs to inherit pkgconfig as well (since pkg-config is used
> when building kconfig as part of the kernel scripts).

Yup.

I've never liked the inherit pkg-config, but prefer to do it as a
DEPENDS directly.
The recipe itself isn't setting any pkg-config options, and it doesn't
really do anything
but tweak dependencies.. but I'll suspend my scorn for the nearly
empty bbclass and just add the inherit directly :D

Cheers,

Bruce

>
>> +
>> +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"
>> +
>> --
>> 2.5.0
>
> //Peter
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core



-- 
"Thou shalt not follow the NULL pointer, for chaos and madness await
thee at its end"



More information about the Openembedded-core mailing list