All of lore.kernel.org
 help / color / mirror / Atom feed
* [meta-raspberrypi][PATCH v2] linux-raspberrypi: support configuration fragments / in-tree defconfig
@ 2015-10-22 14:00 Alex J Lennon
  2015-10-22 16:52 ` How to output all distro features in a given build? Fred Ollinger
  0 siblings, 1 reply; 2+ messages in thread
From: Alex J Lennon @ 2015-10-22 14:00 UTC (permalink / raw)
  To: petter, andrei, yocto

Synopsis
========

Start using Yocto kernel configuration fragments[0] and the "in-tree
defconfig" solution provided in poky[1].

To specify an "in-tree" defconfig file, you may edit the recipe that
builds your kernel so that it has the following command form:

     KBUILD_DEFCONFIG_KMACHINE ?= defconfig_file

You need to append the variable with KMACHINE and then supply the
path to your "in-tree" defconfig file.

In order to achieve this meta-raspberrypi needs to:

- start using KBUILD_DEFCONFIG_KMACHINE
- remove placeholder defconfig and custom copying logic.
- avoid replacing all Yocto project configured settings in
  do_configure_prepend.

In many cases it should not be necessary to change the defconfig
file used.

Instead Yocto supports use of kernel configuration fragment files
to override the in-tree defconfig defaults[0].

For more background regarding this migration read the bugzilla bug
info[2].

[0] - http://www.yoctoproject.org/docs/1.8/kernel-dev/kernel-dev.html#changing-the-configuration
[1] - http://www.yoctoproject.org/docs/1.8/kernel-dev/kernel-dev.html#using-an-in-tree-defconfig-file
[2] - https://bugzilla.yoctoproject.org/show_bug.cgi?id=7474

Testing
=======

Poky master (#6d8ace03) core-image-sato with MACHINE=raspberrypi2

Kernels 3.18.16 / 4.1.10

(1) with no fragment files defined, using in-tree defconfig, kernels/images
    build and boot without error.

- build host kernel .config file contains CONFIG_SND_BCM2835=m.
- post boot, target aplay -l reports no sound devices until module is
  loaded.
- post modprobe, target aplay -l reports sound device.

(2) adding a test configuration fragment to build sound driver
    into the kernel.

- build host kernel .config file contains CONFIG_SND_BCM2835=y.
- post boot, target aplay -l reports sound device with no modprobe
  step.

Note: It may be necessary to clean sstate for the kernel after adding
      a new configuration fragment to the SRC_URI, e.g.

      bitbake -c cleansstate virtual/kernel

Sample Fragment Implementation
==============================

linux-raspberrypi.inc:

+SRC_URI += " \
+        file://build-in-audio.cfg \
+        "

linux-raspberrypi/build-in-audio.cfg:

+CONFIG_SND=y
+CONFIG_SND_BCM2835=y

Signed-off-by: Alex J Lennon <ajlennon@dynamicdevices.co.uk>
---
 recipes-kernel/linux/linux-raspberrypi.inc       | 12 ++++--------
 recipes-kernel/linux/linux-raspberrypi/defconfig |  1 -
 recipes-kernel/linux/linux.inc                   |  7 +++----
 3 files changed, 7 insertions(+), 13 deletions(-)
 delete mode 100644 recipes-kernel/linux/linux-raspberrypi/defconfig

diff --git a/recipes-kernel/linux/linux-raspberrypi.inc b/recipes-kernel/linux/linux-raspberrypi.inc
index 70e8bfe..d3766c4 100644
--- a/recipes-kernel/linux/linux-raspberrypi.inc
+++ b/recipes-kernel/linux/linux-raspberrypi.inc
@@ -6,10 +6,6 @@ SECTION = "kernel"
 LICENSE = "GPLv2"
 LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7"
 
-SRC_URI += " \
-        file://defconfig \
-        "
-
 COMPATIBLE_MACHINE = "raspberrypi"
 
 PE = "1"
@@ -18,6 +14,10 @@ PV = "${LINUX_VERSION}+git${SRCPV}"
 # NOTE: For now we pull in the default config from the RPi kernel GIT tree.
 KERNEL_DEFCONFIG_raspberrypi ?= "bcmrpi_defconfig"
 KERNEL_DEFCONFIG_raspberrypi2 ?= "bcm2709_defconfig"
+KMACHINE ?= "${MACHINE}"
+KCONFIG_MODE = "--alldefconfig"
+KBUILD_DEFCONFIG_raspberrypi ?= "bcmrpi_defconfig"
+KBUILD_DEFCONFIG_raspberrypi2 ?= "bcm2709_defconfig"
 
 # CMDLINE for raspberrypi
 CMDLINE = "dwc_otg.lpm_enable=0 console=ttyAMA0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait"
@@ -42,10 +42,6 @@ python __anonymous () {
             d.setVar("DEPENDS", depends)
 }
 
-do_kernel_configme_prepend() {
-    install -m 0644 ${S}/arch/${ARCH}/configs/${KERNEL_DEFCONFIG} ${WORKDIR}/defconfig || die "No default configuration for ${MACHINE} / ${KERNEL_DEFCONFIG} available."
-}
-
 do_install_prepend() {
     install -d ${D}/lib/firmware
 }
diff --git a/recipes-kernel/linux/linux-raspberrypi/defconfig b/recipes-kernel/linux/linux-raspberrypi/defconfig
deleted file mode 100644
index ecbf32c..0000000
--- a/recipes-kernel/linux/linux-raspberrypi/defconfig
+++ /dev/null
@@ -1 +0,0 @@
-# Dummy file to get through do_kernel_configme.
diff --git a/recipes-kernel/linux/linux.inc b/recipes-kernel/linux/linux.inc
index fae78b7..7ed80af 100644
--- a/recipes-kernel/linux/linux.inc
+++ b/recipes-kernel/linux/linux.inc
@@ -33,8 +33,7 @@ kernel_configure_variable() {
 }
 
 do_configure_prepend() {
-    # Clean .config
-    echo "" > ${B}/.config
+    mv -f ${B}/.config ${B}/.config.patched
     CONF_SED_SCRIPT=""
 
     # oabi / eabi support
@@ -109,8 +108,8 @@ do_configure_prepend() {
 
     # Keep this the last line
     # Remove all modified configs and add the rest to .config
-    sed -e "${CONF_SED_SCRIPT}" < '${WORKDIR}/defconfig' >> '${B}/.config'
-
+    sed -e "${CONF_SED_SCRIPT}" < '${B}/.config.patched' >> '${B}/.config'
+    rm -f ${B}/.config.patched
     yes '' | oe_runmake oldconfig
 }
 
-- 
1.9.1



^ permalink raw reply related	[flat|nested] 2+ messages in thread

* How to output all distro features in a given build?
  2015-10-22 14:00 [meta-raspberrypi][PATCH v2] linux-raspberrypi: support configuration fragments / in-tree defconfig Alex J Lennon
@ 2015-10-22 16:52 ` Fred Ollinger
  0 siblings, 0 replies; 2+ messages in thread
From: Fred Ollinger @ 2015-10-22 16:52 UTC (permalink / raw)
  To: yocto

I know how to add and remove distro features.

However, what I'm after is how to dynamically list all the distro features that a build thinks is needs once all the files are combined together.

For example, one can look at dependencies for a _single_ package by doing:

 $ bitbake -g seescan-image-ccu-dev -u depexp

Also, one can look in the manifest file for all the included packages. This is great.

I'm after for a method to do the same for distro features.

Frederick

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2015-10-22 16:52 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-10-22 14:00 [meta-raspberrypi][PATCH v2] linux-raspberrypi: support configuration fragments / in-tree defconfig Alex J Lennon
2015-10-22 16:52 ` How to output all distro features in a given build? Fred Ollinger

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.