Skip to contentSkip to conversation

linux-yocto: v4.8 + fixes + configuration updates + RFC

PATCH In review Bruce Ashfield 4 participants 17 messages Aug 30, 2016 – Aug 31, 2016

lore
Share & tools
lore
#0 lore raw

cover linux-yocto: v4.8 + fixes + configuration updates + RFC

Hi all,

Here's the latest updates to the linux-yoco* baseline support. There are three distinct blocks in the consolidated pull request, with the biggest being the introduction of a 4.8 named kernel and 4.8 based libc-headers.

The others are fixes to the kernel-yocto processing and kernel meta data updates. As such, these commits can be taken in isolation to the 4.8 update that I've included in the pull request.

kernel-yocto: test for empty artifacts
linux-yocto/4.x: configuration updates
kernel-yocto: do_kernel_configme: Fix silent sysroot poisoning error

On the topic of the version 4.8:

- This is the intended 'newest' kernel for the upcoming fall release cycle. We will have a shiny new one this time around.

- yes it is a -rc4 release, but the version wasn't chosen by mistake (or lightly). It was the typical balancing act.

- It is nice to work through the development cycle of the upstream kernel, since we can send fixes in realtime to the mainline tree .. but this is the side effect of the choice, not the reason

- This version balances a new enough kernel, LTS/LTSI, -rt, platform updates (ARM/x86) and the timing of the release.

The LTS/LTSI kernels are either too old at the moment, and won't get a port of major patch series like -rt. Hence why v4.8 shoots the difference between the options and gives us a good baseline to update in the upcoming months, and one that we can compliment with other kernel versions later.

- The delta between any -rcX releases is small, so following this through until its release is not a big issue.

build/boot testing:

- I've built and booted qemu* with core-image-sato, so it is known to build and have a sane runtime for all arches. I've also built the typical packages that misbehave (lttng, perf, etc).

- The versatile platform switched to a device tree boot in the 4.7 timeframe. As such, I had to patch runqemu to use a device tree .. and use that device tree conditionally, since we have to support older kernels at the same time as 4.7+

- I know that there are pending changes to the way runqemu works, but I patched what I had in master .. these can be updated/adjusted if need be.

libc-headers update:

- Since there are milestone builds coming up, I wanted to get the 4.8 libc headers in place. Which meant that I had to do some different things to use the testing kernel tarball, and to get the version of the package right.

This might cause us version stepping issues .. so anyone looking at this can suggest what I need to do to avoid them, and I can update and rebase the series with the proper fix.

The linux-yocto-4.8 repository:

- There have been comments about the linux-yocto* repos filling up download directories, and consuming people's bandwidth. Since we don't have a shallow clone or reference clone way to deal with the amount of shared kernel blobs, I've simultaneously generated a v4.8 kernel in a repository that could be re-used over time.

http://git.yoctoproject.org/cgit/cgit.cgi/linux-yocto/

The proposal is that if we really want to avoid separate kernel trees, and keep the ability to rebase/remove/amend old commits to keep the tree clean, that I can insert the version number into the branches as a marker. Comments on this approach are welcome, since if we go this way, I need to adjust all the KBRANCH variables.

I'll follow up with commits to change the default qemu version to 4.8 once there's general agreement about the options on this.

Cheers,

Bruce

The following changes since commit 2fedd226c3385f1ac160b3aa0bfadbded85e288c:

ref-manual: Fixed small wording in PKGR in the glossary (2016-08-25 23:09:29 +0100)

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 (8):
linux-yocto: introduce v4.8 recipes
perf: adapt to Makefile.config
qemuarm: add device tree support
linux-yocto-dev: bump to v4.8+
libc-headers: update to v4.8
linux-yocto/4.8: add qemuarm device tree specification
kernel-yocto: test for empty artifacts linux-yocto/4.x: configuration updates

Ioan-Adrian Ratiu (1):
kernel-yocto: do_kernel_configme: Fix silent sysroot poisoning error

 meta/classes/kernel-yocto.bbclass                  | 12 ++++--
 meta/conf/distro/include/tcmode-default.inc        |  2 +-
 .../linux-libc-headers/linux-libc-headers_4.8.bb   | 13 +++++++
 meta/recipes-kernel/linux/linux-yocto-dev.bb       |  4 +-
 meta/recipes-kernel/linux/linux-yocto-rt_4.1.bb    |  2 +-
 meta/recipes-kernel/linux/linux-yocto-rt_4.4.bb    |  2 +-
 meta/recipes-kernel/linux/linux-yocto-rt_4.8.bb    | 38 +++++++++++++++++++
 meta/recipes-kernel/linux/linux-yocto-tiny_4.1.bb  |  2 +-
 meta/recipes-kernel/linux/linux-yocto-tiny_4.4.bb  |  2 +-
 meta/recipes-kernel/linux/linux-yocto-tiny_4.8.bb  | 25 ++++++++++++
 meta/recipes-kernel/linux/linux-yocto_4.1.bb       |  2 +-
 meta/recipes-kernel/linux/linux-yocto_4.4.bb       |  2 +-
 meta/recipes-kernel/linux/linux-yocto_4.8.bb       | 44 ++++++++++++++++++++++
 meta/recipes-kernel/perf/perf.bb                   |  9 ++++-
 scripts/runqemu-internal                           |  3 ++
 15 files changed, 150 insertions(+), 12 deletions(-)
 create mode 100644 meta/recipes-kernel/linux-libc-headers/linux-libc-headers_4.8.bb
 create mode 100644 meta/recipes-kernel/linux/linux-yocto-rt_4.8.bb
 create mode 100644 meta/recipes-kernel/linux/linux-yocto-tiny_4.8.bb
 create mode 100644 meta/recipes-kernel/linux/linux-yocto_4.8.bb
Signature · 1 line
2.5.0
#1 lore raw

PATCH 1/9 linux-yocto: introduce v4.8 recipes

---
 meta/recipes-kernel/linux/linux-yocto-rt_4.8.bb   | 36 +++++++++++++++++++
 meta/recipes-kernel/linux/linux-yocto-tiny_4.8.bb | 23 +++++++++++++
 meta/recipes-kernel/linux/linux-yocto_4.8.bb      | 42 +++++++++++++++++++++++
 3 files changed, 101 insertions(+)
 create mode 100644 meta/recipes-kernel/linux/linux-yocto-rt_4.8.bb
 create mode 100644 meta/recipes-kernel/linux/linux-yocto-tiny_4.8.bb
 create mode 100644 meta/recipes-kernel/linux/linux-yocto_4.8.bb
meta/recipes-kernel/linux/linux-yocto-rt_4.8.bb new file +36 -0
new file mode 100644
index 000000000000..9adf52322dc0
@@ -0,0 +1,36 @@
+KBRANCH ?= "standard/preempt-rt/base"
+
+require recipes-kernel/linux/linux-yocto.inc
+
+# Skip processing of this recipe if it is not explicitly specified as the
+# PREFERRED_PROVIDER for virtual/kernel. This avoids errors when trying
+# to build multiple virtual/kernel providers, e.g. as dependency of
+# core-image-rt-sdk, core-image-rt.
+python () {
+    if d.getVar("PREFERRED_PROVIDER_virtual/kernel", True) != "linux-yocto-rt":
+        raise bb.parse.SkipPackage("Set PREFERRED_PROVIDER_virtual/kernel to linux-yocto-rt to enable it")
+}
+
+SRCREV_machine ?= "a7d71794e4e38d2f861c1b1dbff761ae0b0836b3"
+SRCREV_meta ?= "8cb7317502c2577f8c83eaf1c061603023824313"
+
+SRC_URI = "git://git.yoctoproject.org/linux-yocto-4.8.git;branch=${KBRANCH};name=machine \
+           git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-4.8;destsuffix=${KMETA}"
+
+LINUX_VERSION ?= "4.8-rc4"
+
+PV = "${LINUX_VERSION}+git${SRCPV}"
+
+KMETA = "kernel-meta"
+KCONF_BSP_AUDIT_LEVEL = "2"
+
+LINUX_KERNEL_TYPE = "preempt-rt"
+
+COMPATIBLE_MACHINE = "(qemux86|qemux86-64|qemuarm|qemuppc|qemumips)"
+
+# Functionality flags
+KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc features/taskstats/taskstats.scc"
+KERNEL_FEATURES_append = " ${KERNEL_EXTRA_FEATURES}"
+KERNEL_FEATURES_append_qemuall=" cfg/virtio.scc"
+KERNEL_FEATURES_append_qemux86=" cfg/sound.scc cfg/paravirt_kvm.scc"
+KERNEL_FEATURES_append_qemux86-64=" cfg/sound.scc"
meta/recipes-kernel/linux/linux-yocto-tiny_4.8.bb new file +23 -0
new file mode 100644
index 000000000000..a157c2aa80cd
@@ -0,0 +1,23 @@
+KBRANCH ?= "standard/tiny/common-pc"
+LINUX_KERNEL_TYPE = "tiny"
+KCONFIG_MODE = "--allnoconfig"
+
+require recipes-kernel/linux/linux-yocto.inc
+
+LINUX_VERSION ?= "4.8-rc4"
+
+KMETA = "kernel-meta"
+KCONF_BSP_AUDIT_LEVEL = "2"
+
+SRCREV_machine ?= "3eab887a55424fc2c27553b7bfe32330df83f7b8"
+SRCREV_meta ?= "8cb7317502c2577f8c83eaf1c061603023824313"
+
+PV = "${LINUX_VERSION}+git${SRCPV}"
+
+SRC_URI = "git://git.yoctoproject.org/linux-yocto-4.8.git;branch=${KBRANCH};name=machine \
+           git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-4.8;destsuffix=${KMETA}"
+
+COMPATIBLE_MACHINE = "(qemux86$)"
+
+# Functionality flags
+KERNEL_FEATURES = ""
meta/recipes-kernel/linux/linux-yocto_4.8.bb new file +42 -0

42 lines not on this page · raw message

Signature · 1 line
2.5.0
#2 lore raw

PATCH 2/9 perf: adapt to Makefile.config

In reply to Bruce Ashfield

commit 4842576cd857 [perf tools: Move config/Makefile into Makefile.config] relocated the configuration Makefile of perf. As such, we need to adapt our fixup routines to work with the Makefile no matter where it is.

---
 meta/recipes-kernel/perf/perf.bb | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)
meta/recipes-kernel/perf/perf.bb +8 -1
index d4855488aeb0..88e3a0a78cd7 100644
@@ -133,11 +133,17 @@ do_configure_prepend () {
     # with each other if its in the shared source directory
     #
     if [ -e "${S}/tools/perf/config/Makefile" ]; then
+        perfconfig="${S}/tools/perf/config/Makefile"
+    fi
+    if [ -e "${S}/tools/perf/Makefile.config" ]; then
+        perfconfig="${S}/tools/perf/Makefile.config"
+    fi
+    if [ -n "${perfconfig}" ]; then
         # Match $(prefix)/$(lib) and $(prefix)/lib
         sed -i -e 's,^libdir = \($(prefix)/.*lib\),libdir ?= \1,' \
                -e 's,^perfexecdir = \(.*\),perfexecdir ?= \1,' \
                -e 's,\ .config-detected, $(OUTPUT)/config-detected,g' \
-            ${S}/tools/perf/config/Makefile
+            ${perfconfig}
     fi
     # The man pages installation is "$(INSTALL) -d -m 755 $(DESTDIR)$(man1dir)"
     # in ${S}/tools/perf/Documentation/Makefile, if the mandir set to '?=', it
@@ -214,6 +220,7 @@ RDEPENDS_${PN}-tests =+ "python"
 RSUGGESTS_SCRIPTING = "${@perf_feature_enabled('perf-scripting', '${PN}-perl ${PN}-python', '',d)}"
 RSUGGESTS_${PN} += "${PN}-archive ${PN}-tests ${RSUGGESTS_SCRIPTING}"
 
+#FILES_${PN} += "${libexecdir}/perf-core ${exec_prefix}/libexec/perf-core /usr/lib64/traceevent ${libdir}/traceevent"
 FILES_${PN} += "${libexecdir}/perf-core ${exec_prefix}/libexec/perf-core ${libdir}/traceevent"
 FILES_${PN}-archive = "${libdir}/perf/perf-core/perf-archive"
 FILES_${PN}-tests = "${libdir}/perf/perf-core/tests ${libexecdir}/perf-core/tests"
Signature · 1 line
2.5.0
#3 lore raw

PATCH 3/9 qemuarm: add device tree support

In reply to Bruce Ashfield

As of the 4.7 kernel qemuarm must be booted with a dtb. To allow older and recent kernels to both boot qemuarm, we add the device tree definitions only to recipes that need it (linux-yocto-dev) and make runqemu detect and use the dtb if present.

---
 scripts/runqemu-internal | 3 +++
 1 file changed, 3 insertions(+)
scripts/runqemu-internal +3 -0
index d10466d35cce..e74a9150cbd7 100755
@@ -298,6 +298,9 @@ config_qemuarm() {
         KERNCMDLINE="root=/dev/nfs nfsroot=$NFS_SERVER:$NFS_DIR,$UNFS_OPTS rw console=ttyAMA0,115200 $KERNEL_NETWORK_CMD mem=$QEMU_MEMORY"
         QEMUOPTIONS="$QEMU_NETWORK_CMD -M ${MACHINE_SUBTYPE} --no-reboot $QEMU_UI_OPTIONS"
     fi
+    if [ -e "$DEPLOY_DIR_IMAGE/zImage-versatile-pb.dtb" ]; then
+        QEMUOPTIONS="$QEMUOPTIONS -dtb $DEPLOY_DIR_IMAGE/zImage-versatile-pb.dtb"
+    fi
     if [ "$MACHINE" = "qemuarmv6" ]; then
         QEMUOPTIONS="$QEMUOPTIONS -cpu arm1136"
     fi
Signature · 1 line
2.5.0
#4 lore raw

Re: [PATCH 3/9] qemuarm: add device tree support

Quoted 9 lines · Bruce Ashfield

As of the 4.7 kernel qemuarm must be booted with a dtb. To allow older and recent kernels to both boot qemuarm, we add the device tree definitions only to recipes that need it (linux-yocto-dev) and make runqemu detect and use the dtb if present.

---
 scripts/runqemu-internal | 3 +++
 1 file changed, 3 insertions(+)

This doesn't work with Roberts runqemu conversion to python.

I did try adding http://git.yoctoproject.org/cgit.cgi/poky/commit/?h=ma
ster-next&id=e91d7bf00bfab5142bc290425103971b897c208b however this requires the use of the dtb file and doesn't work with older kernels. I'll see if I can come up with something better based on kernel PREFERRED_VERSION...

Cheers,

Richard

#5 lore raw

Re: [PATCH 3/9] qemuarm: add device tree support

Quoted 11 lines · Richard Purdie
Quoted 9 lines · Bruce Ashfield

As of the 4.7 kernel qemuarm must be booted with a dtb. To allow older and recent kernels to both boot qemuarm, we add the device tree definitions only to recipes that need it (linux-yocto-dev) and make runqemu detect and use the dtb if present.

---
 scripts/runqemu-internal | 3 +++
 1 file changed, 3 insertions(+)
Quoted 8 lines

This doesn't work with Roberts runqemu conversion to python.

I did try adding http://git.yoctoproject.org/cgit.cgi/poky/commit/?h=ma
ster-next&id=e91d7bf00bfab5142bc290425103971b897c208b however this requires the use of the dtb file and doesn't work with older kernels. I'll see if I can come up with something better based on kernel PREFERRED_VERSION...

Yah. I mentioned this one in my 0/N, I was working against the current master
(I should just work against master-next for these .. mental note for next time).

Bruce

Quoted 11 lines

Cheers,

Richard

--
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Signature · 2 lines
"Thou shalt not follow the NULL pointer, for chaos and madness await thee
at its end"
#6 lore raw

PATCH 4/9 linux-yocto-dev: bump to v4.8+

In reply to Bruce Ashfield
---
 meta/recipes-kernel/linux/linux-yocto-dev.bb | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
meta/recipes-kernel/linux/linux-yocto-dev.bb +1 -1
index c7773506a636..91c58bfccafa 100644
@@ -37,7 +37,7 @@ SRC_URI = "git://git.yoctoproject.org/linux-yocto-dev.git;branch=${KBRANCH};name
 SRCREV_machine ?= '${@oe.utils.conditional("PREFERRED_PROVIDER_virtual/kernel", "linux-yocto-dev", "${AUTOREV}", "29594404d7fe73cd80eaa4ee8c43dcc53970c60e", d)}'
 SRCREV_meta ?= '${@oe.utils.conditional("PREFERRED_PROVIDER_virtual/kernel", "linux-yocto-dev", "${AUTOREV}", "29594404d7fe73cd80eaa4ee8c43dcc53970c60e", d)}'
 
-LINUX_VERSION ?= "4.6-rc+"
+LINUX_VERSION ?= "4.8-rc+"
 LINUX_VERSION_EXTENSION ?= "-yoctodev-${LINUX_KERNEL_TYPE}"
 PV = "${LINUX_VERSION}+git${SRCPV}"
 
Signature · 1 line
2.5.0
#7 lore raw

PATCH 5/9 libc-headers: update to v4.8

In reply to Bruce Ashfield

Updating the libc-headers to use the 4.8 kernel as the default.

---
 meta/conf/distro/include/tcmode-default.inc                 |  2 +-
 .../linux-libc-headers/linux-libc-headers_4.8.bb            | 13 +++++++++++++
 2 files changed, 14 insertions(+), 1 deletion(-)
 create mode 100644 meta/recipes-kernel/linux-libc-headers/linux-libc-headers_4.8.bb
meta/conf/distro/include/tcmode-default.inc +1 -1
index 7c73411de0a2..79855963282b 100644
@@ -28,7 +28,7 @@ BINUVERSION ?= "2.27%"
 GDBVERSION ?= "7.11%"
 GLIBCVERSION ?= "2.24"
 UCLIBCVERSION ?= "1.0%"
-LINUXLIBCVERSION ?= "4.4"
+LINUXLIBCVERSION ?= "4.8%"
 
 PREFERRED_VERSION_gcc ?= "${GCCVERSION}"
 PREFERRED_VERSION_gcc-cross-${TARGET_ARCH} ?= "${GCCVERSION}"
meta/recipes-kernel/linux-libc-headers/linux-libc-headers_4.8.bb new file +13 -0
new file mode 100644
index 000000000000..f80f02cb1896
@@ -0,0 +1,13 @@
+require linux-libc-headers.inc
+
+SRC_URI_forcevariable = "${KERNELORG_MIRROR}/linux/kernel/v${HEADER_FETCH_VER}/testing/linux-4.8-rc4.tar.${KORG_ARCHIVE_COMPRESSION}"
+PV = "4.8-rc4"
+
+SRC_URI_append_libc-musl = "\
+    file://0001-libc-compat.h-fix-some-issues-arising-from-in6.h.patch \
+    file://0002-libc-compat.h-prevent-redefinition-of-struct-ethhdr.patch \
+    file://0003-remove-inclusion-of-sysinfo.h-in-kernel.h.patch \
+   "
+
+SRC_URI[md5sum] = "269067213995c7742730ce53b8140c90"
+SRC_URI[sha256sum] = "8f07a0d76a7d1a30490582ba9642b7f28370102bc4acc4bb4b2586c8eabf4447"
Signature · 1 line
2.5.0
#8 lore raw

Re: [PATCH 5/9] libc-headers: update to v4.8

Quoted 10 lines · Bruce Ashfield

Updating the libc-headers to use the 4.8 kernel as the default.

---
 meta/conf/distro/include/tcmode-default.inc                 |  2 +-
 .../linux-libc-headers/linux-libc-headers_4.8.bb            | 13
+++++++++++++
 2 files changed, 14 insertions(+), 1 deletion(-)
 create mode 100644 meta/recipes-kernel/linux-libc-headers/linux-libc

-headers_4.8.bb

The musl patches fail to apply on the new version:

https://autobuilder.yoctoproject.org/main/builders/poky-tiny/builds/928
/steps/BuildImages/logs/stdio

Cheers,

Richard

#9 lore raw

Re: [PATCH 5/9] libc-headers: update to v4.8

Quoted 12 lines · Richard Purdie
Quoted 10 lines · Bruce Ashfield

Updating the libc-headers to use the 4.8 kernel as the default.

---
 meta/conf/distro/include/tcmode-default.inc                 |  2 +-
 .../linux-libc-headers/linux-libc-headers_4.8.bb            | 13
+++++++++++++
 2 files changed, 14 insertions(+), 1 deletion(-)
 create mode 100644 meta/recipes-kernel/linux-libc-headers/linux-libc

-headers_4.8.bb

Quoted 4 lines

The musl patches fail to apply on the new version:

https://autobuilder.yoctoproject.org/main/builders/poky-tiny/builds/928
/steps/BuildImages/logs/stdio

I can drop those patches, but that's all that I can really offer, since even if
I ported them, I don't build or test with musl.

What's the preference ? I do a "they apply" port, or just drop them until someone
else who knows musl can do the port ?

Bruce

Quoted 11 lines

Cheers,

Richard
--
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Signature · 2 lines
"Thou shalt not follow the NULL pointer, for chaos and madness await thee
at its end"
#10 lore raw

PATCH 6/9 linux-yocto/4.8: add qemuarm device tree specification

In reply to Bruce Ashfield

4.7+ requires a device tree for the arm versatile family of platforms. We add the definition to our 4.8 linux-yocto recipes so we can continue to boot!

---
 meta/recipes-kernel/linux/linux-yocto-dev.bb      | 2 ++
 meta/recipes-kernel/linux/linux-yocto-rt_4.8.bb   | 2 ++
 meta/recipes-kernel/linux/linux-yocto-tiny_4.8.bb | 2 ++
 meta/recipes-kernel/linux/linux-yocto_4.8.bb      | 2 ++
 4 files changed, 8 insertions(+)
meta/recipes-kernel/linux/linux-yocto-dev.bb +2 -0
index 91c58bfccafa..dbe58477f54e 100644
@@ -43,6 +43,8 @@ PV = "${LINUX_VERSION}+git${SRCPV}"
 
 COMPATIBLE_MACHINE = "(qemuarm|qemux86|qemuppc|qemumips|qemumips64|qemux86-64)"
 
+KERNEL_DEVICETREE_qemuarm = "versatile-pb.dtb"
+
 # Functionality flags
 KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc features/taskstats/taskstats.scc"
 KERNEL_FEATURES_append = " ${KERNEL_EXTRA_FEATURES}"
meta/recipes-kernel/linux/linux-yocto-rt_4.8.bb +2 -0
index 9adf52322dc0..c602bd3b2c9c 100644
@@ -28,6 +28,8 @@ LINUX_KERNEL_TYPE = "preempt-rt"
 
 COMPATIBLE_MACHINE = "(qemux86|qemux86-64|qemuarm|qemuppc|qemumips)"
 
+KERNEL_DEVICETREE_qemuarm = "versatile-pb.dtb"
+
 # Functionality flags
 KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc features/taskstats/taskstats.scc"
 KERNEL_FEATURES_append = " ${KERNEL_EXTRA_FEATURES}"
meta/recipes-kernel/linux/linux-yocto-tiny_4.8.bb +2 -0
index a157c2aa80cd..ea89eebe6617 100644
@@ -21,3 +21,5 @@ COMPATIBLE_MACHINE = "(qemux86$)"
 
 # Functionality flags
 KERNEL_FEATURES = ""
+
+KERNEL_DEVICETREE_qemuarm = "versatile-pb.dtb"
meta/recipes-kernel/linux/linux-yocto_4.8.bb +2 -0
index c92f7bcd18c2..cf31d3c846bd 100644
@@ -31,6 +31,8 @@ PV = "${LINUX_VERSION}+git${SRCPV}"
 KMETA = "kernel-meta"
 KCONF_BSP_AUDIT_LEVEL = "2"
 
+KERNEL_DEVICETREE_qemuarm = "versatile-pb.dtb"
+
 COMPATIBLE_MACHINE = "qemuarm|qemuarm64|qemux86|qemuppc|qemumips|qemumips64|qemux86-64"
 
 # Functionality flags
Signature · 1 line
2.5.0
#11 lore raw

PATCH 7/9 kernel-yocto: test for empty artifacts

In reply to Bruce Ashfield

With the updated kernel tools, we generate a list of sccs, patches, configs and BSP definitions as part of the meta data generation.

It is valid if there aren't any of these artifacts found (i.e. you are just building a branch and a default config), but invoking the tools with no inputs isn't a good idea.

To avoid this issue, we generate a string based on the artifacts and skip calling the tools if there's nothing to do.

---
 meta/classes/kernel-yocto.bbclass | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)
meta/classes/kernel-yocto.bbclass +8 -2
index 8650e55de727..9b8bab63ca09 100644
@@ -139,10 +139,16 @@ do_kernel_metadata() {
 	meta_dir=$(kgit --meta)
 
 	# run1: pull all the configuration fragments, no matter where they come from
-	scc --force -o ${S}/${meta_dir}:cfg,meta ${includes} ${bsp_definition} ${sccs} ${patches} ${KERNEL_FEATURES}
+	elements="`echo -n ${bsp_definition} ${sccs} ${patches} ${KERNEL_FEATURES}`"
+	if [ -n "${elements}" ]; then
+		scc --force -o ${S}/${meta_dir}:cfg,meta ${includes} ${bsp_definition} ${sccs} ${patches} ${KERNEL_FEATURES}
+	fi
 
 	# run2: only generate patches for elements that have been passed on the SRC_URI
-	scc --force -o ${S}/${meta_dir}:patch --cmds patch ${includes} ${sccs} ${patches} ${KERNEL_FEATURES}
+	elements="`echo -n ${sccs} ${patches} ${KERNEL_FEATURES}`"
+	if [ -n "${elements}" ]; then
+		scc --force -o ${S}/${meta_dir}:patch --cmds patch ${includes} ${sccs} ${patches} ${KERNEL_FEATURES}
+	fi
 }
 
 do_patch() {
Signature · 1 line
2.5.0
#12 lore raw

PATCH 8/9 kernel-yocto: do_kernel_configme: Fix silent sysroot poisoning error

In reply to Bruce Ashfield

From: Ioan-Adrian Ratiu <[email protected]>

do_kernel_configme calls merge_config.sh (installed in the sysroot by the kern-tools-native recipe) which may invoke the compiler to complete the configuration process.

Depending on the build (and dependencies), this may error due to sysroot poisoning [1].

The errors are similar to:

make[1]: Entering directory '4.1+gitAUTOINC+a7e53ecc27-r0/linux-x64-standard-build' HOSTCC scripts/basic/fixdep work-shared/x64/kernel-source/scripts/basic/fixdep.c:106:23: fatal error: sys/types.h: No such file or directory compilation terminated.
make[2]: *** [work-shared/x64/kernel-source/scripts/basic/Makefile:22: scripts/basic/x86_64-nilrt-linux-fixdep] Error 1

Adding $TOOLCHAIN_OPTIONS to $CFLAGS before calling merge_configs.sh fixes the error because $TOOLCHAIN_OPTIONS defines the sysroot and make uses it to correctly compile & fill all missing kernel config options.

[1] http://lists.openembedded.org/pipermail/openembedded-core/2014-October/098253.html

---
 meta/classes/kernel-yocto.bbclass | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
meta/classes/kernel-yocto.bbclass +1 -1
index 9b8bab63ca09..068378f06796 100644
@@ -255,7 +255,7 @@ do_kernel_configme() {
 		bbfatal_log "Could not find configuration queue (${meta_dir}/config.queue)"
 	fi
 
-	ARCH=${ARCH} merge_config.sh -O ${B} ${config_flags} ${configs} > ${meta_dir}/cfg/merge_config_build.log 2>&1
+	CFLAGS="${CFLAGS} ${TOOLCHAIN_OPTIONS}"	ARCH=${ARCH} merge_config.sh -O ${B} ${config_flags} ${configs} > ${meta_dir}/cfg/merge_config_build.log 2>&1
 	if [ $? -ne 0 ]; then
 		bbfatal_log "Could not configure ${KMACHINE}-${LINUX_KERNEL_TYPE}"
 	fi
Signature · 1 line
2.5.0
#13 lore raw

PATCH 9/9 linux-yocto/4.x: configuration updates

In reply to Bruce Ashfield

Integrating a series to expliclity set the quark build to 32 bits and avoid 64 bit x86 defaults.

We also have a series of commits that fix configuration warnings on x86 platforms:

intel-quark.cfg: Explicitly disable CONFIG_64BIT common-pc-drivers.cfg: Remove I2O configs
features: Fix dependencies and =m vs =y discrepancies for corei7 intel-core2-32.cfg: Explicitly disable CONFIG_64BIT
features: Add 6lowpan feature and add it where necessary

---
 meta/recipes-kernel/linux/linux-yocto-rt_4.1.bb   | 2 +-
 meta/recipes-kernel/linux/linux-yocto-rt_4.4.bb   | 2 +-
 meta/recipes-kernel/linux/linux-yocto-tiny_4.1.bb | 2 +-
 meta/recipes-kernel/linux/linux-yocto-tiny_4.4.bb | 2 +-
 meta/recipes-kernel/linux/linux-yocto_4.1.bb      | 2 +-
 meta/recipes-kernel/linux/linux-yocto_4.4.bb      | 2 +-
 6 files changed, 6 insertions(+), 6 deletions(-)
meta/recipes-kernel/linux/linux-yocto-rt_4.1.bb +1 -1
index c31692614d01..9a4a2ff7897e 100644
@@ -12,7 +12,7 @@ python () {
 }
 
 SRCREV_machine ?= "b88e2b5805213daeb0136fdd8c840dc0254a3d21"
-SRCREV_meta ?= "3e7c4fbbbc0ca217ddb3d3ee5235d5ad582e0c56"
+SRCREV_meta ?= "f7984d610b3e0dcffc52db019400ebce53ae28d7"
 
 SRC_URI = "git://git.yoctoproject.org/linux-yocto-4.1.git;branch=${KBRANCH};name=machine \
            git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-4.1;destsuffix=${KMETA}"
meta/recipes-kernel/linux/linux-yocto-rt_4.4.bb +1 -1
index 9b0a44b79166..fc0e2a431e0a 100644
@@ -12,7 +12,7 @@ python () {
 }
 
 SRCREV_machine ?= "9135adcfb01432abe4a95a50fca5d0395239f798"
-SRCREV_meta ?= "6a12efcabe8d48e323afd277fa672eae9b7e12c2"
+SRCREV_meta ?= "698835841165b68089604398f68fd8bc3f79cb65"
 
 SRC_URI = "git://git.yoctoproject.org/linux-yocto-4.4.git;branch=${KBRANCH};name=machine \
            git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-4.4;destsuffix=${KMETA}"
meta/recipes-kernel/linux/linux-yocto-tiny_4.1.bb +1 -1
index 72aac116905e..7fe2bde3a96f 100644
@@ -10,7 +10,7 @@ KMETA = "kernel-meta"
 KCONF_BSP_AUDIT_LEVEL = "2"
 
 SRCREV_machine ?= "0847ed67f89b5a8bbaaa0a7b6cfa2a99ef34834f"
-SRCREV_meta ?= "3e7c4fbbbc0ca217ddb3d3ee5235d5ad582e0c56"
+SRCREV_meta ?= "f7984d610b3e0dcffc52db019400ebce53ae28d7"
 
 PV = "${LINUX_VERSION}+git${SRCPV}"
 
meta/recipes-kernel/linux/linux-yocto-tiny_4.4.bb +1 -1
index 114bd746d64b..1334a8606e34 100644
@@ -10,7 +10,7 @@ KMETA = "kernel-meta"
 KCONF_BSP_AUDIT_LEVEL = "2"
 
 SRCREV_machine ?= "0a0c93f29c0d65c00abdd2f6d1eb89134fae9525"
-SRCREV_meta ?= "6a12efcabe8d48e323afd277fa672eae9b7e12c2"
+SRCREV_meta ?= "698835841165b68089604398f68fd8bc3f79cb65"
 
 PV = "${LINUX_VERSION}+git${SRCPV}"
 
meta/recipes-kernel/linux/linux-yocto_4.1.bb +1 -1
index 6b75a8a6892b..b7e7e7d4fa65 100644
@@ -19,7 +19,7 @@ SRCREV_machine_qemux86 ?= "0847ed67f89b5a8bbaaa0a7b6cfa2a99ef34834f"
 SRCREV_machine_qemux86-64 ?= "0847ed67f89b5a8bbaaa0a7b6cfa2a99ef34834f"
 SRCREV_machine_qemumips64 ?= "106ed721d21c595dfb993a8990c3a29830dfc166"
 SRCREV_machine ?= "0847ed67f89b5a8bbaaa0a7b6cfa2a99ef34834f"
-SRCREV_meta ?= "3e7c4fbbbc0ca217ddb3d3ee5235d5ad582e0c56"
+SRCREV_meta ?= "f7984d610b3e0dcffc52db019400ebce53ae28d7"
 
 SRC_URI = "git://git.yoctoproject.org/linux-yocto-4.1.git;name=machine;branch=${KBRANCH}; \
            git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-4.1;destsuffix=${KMETA}"
meta/recipes-kernel/linux/linux-yocto_4.4.bb +1 -1
index f45007a361f2..8661452c74fa 100644
@@ -19,7 +19,7 @@ SRCREV_machine_qemux86 ?= "0a0c93f29c0d65c00abdd2f6d1eb89134fae9525"
 SRCREV_machine_qemux86-64 ?= "0a0c93f29c0d65c00abdd2f6d1eb89134fae9525"
 SRCREV_machine_qemumips64 ?= "aa125473aef74e7731b14f6b56c1b50589fcd668"
 SRCREV_machine ?= "0a0c93f29c0d65c00abdd2f6d1eb89134fae9525"
-SRCREV_meta ?= "6a12efcabe8d48e323afd277fa672eae9b7e12c2"
+SRCREV_meta ?= "698835841165b68089604398f68fd8bc3f79cb65"
 
 SRC_URI = "git://git.yoctoproject.org/linux-yocto-4.4.git;name=machine;branch=${KBRANCH}; \
            git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-4.4;destsuffix=${KMETA}"
Signature · 1 line
2.5.0
#14 lore raw
In reply to Bruce Ashfield

I've built an intel-corei7-64 image with the new kernel. Looks good so far - booted on a MinnowBoard Turbot immediately with no new errors or warnings!

For anyone curious, preliminary recipes for meta-intel are available at meta-intel-contrib -b clsulliv/auto-srcrevs.

---
Cal

Quoted 131 lines · Bruce Ashfield

Hi all,

Here's the latest updates to the linux-yoco* baseline support. There are three distinct blocks in the consolidated pull request, with the biggest being the introduction of a 4.8 named kernel and 4.8 based libc-headers.

The others are fixes to the kernel-yocto processing and kernel meta data updates. As such, these commits can be taken in isolation to the 4.8 update that I've included in the pull request.

kernel-yocto: test for empty artifacts
linux-yocto/4.x: configuration updates
kernel-yocto: do_kernel_configme: Fix silent sysroot poisoning error

On the topic of the version 4.8:

- This is the intended 'newest' kernel for the upcoming fall release cycle. We will have a shiny new one this time around.

- yes it is a -rc4 release, but the version wasn't chosen by mistake (or lightly). It was the typical balancing act.

- It is nice to work through the development cycle of the upstream kernel, since we can send fixes in realtime to the mainline tree .. but this is the side effect of the choice, not the reason

- This version balances a new enough kernel, LTS/LTSI, -rt, platform updates (ARM/x86) and the timing of the release.

The LTS/LTSI kernels are either too old at the moment, and won't get a port of major patch series like -rt. Hence why v4.8 shoots the difference between the options and gives us a good baseline to update in the upcoming months, and one that we can compliment with other kernel versions later.

- The delta between any -rcX releases is small, so following this through until its release is not a big issue.

build/boot testing:

- I've built and booted qemu* with core-image-sato, so it is known to build and have a sane runtime for all arches. I've also built the typical packages that misbehave (lttng, perf, etc).

- The versatile platform switched to a device tree boot in the 4.7 timeframe. As such, I had to patch runqemu to use a device tree .. and use that device tree conditionally, since we have to support older kernels at the same time as 4.7+

- I know that there are pending changes to the way runqemu works, but I patched what I had in master .. these can be updated/adjusted if need be.

libc-headers update:

- Since there are milestone builds coming up, I wanted to get the 4.8 libc headers in place. Which meant that I had to do some different things to use the testing kernel tarball, and to get the version of the package right.

This might cause us version stepping issues .. so anyone looking at this can suggest what I need to do to avoid them, and I can update and rebase the series with the proper fix.

The linux-yocto-4.8 repository:

- There have been comments about the linux-yocto* repos filling up download directories, and consuming people's bandwidth. Since we don't have a shallow clone or reference clone way to deal with the amount of shared kernel blobs, I've simultaneously generated a v4.8 kernel in a repository that could be re-used over time.

http://git.yoctoproject.org/cgit/cgit.cgi/linux-yocto/

The proposal is that if we really want to avoid separate kernel trees, and keep the ability to rebase/remove/amend old commits to keep the tree clean, that I can insert the version number into the branches as a marker. Comments on this approach are welcome, since if we go this way, I need to adjust all the KBRANCH variables.

I'll follow up with commits to change the default qemu version to 4.8 once there's general agreement about the options on this.

Cheers,

Bruce

The following changes since commit 2fedd226c3385f1ac160b3aa0bfadbded85e288c:

ref-manual: Fixed small wording in PKGR in the glossary (2016-08-25 23:09:29 +0100)

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 (8):
linux-yocto: introduce v4.8 recipes
perf: adapt to Makefile.config
qemuarm: add device tree support
linux-yocto-dev: bump to v4.8+
libc-headers: update to v4.8
linux-yocto/4.8: add qemuarm device tree specification
kernel-yocto: test for empty artifacts linux-yocto/4.x: configuration updates

Ioan-Adrian Ratiu (1):
kernel-yocto: do_kernel_configme: Fix silent sysroot poisoning error

  meta/classes/kernel-yocto.bbclass                  | 12 ++++--
  meta/conf/distro/include/tcmode-default.inc        |  2 +-
  .../linux-libc-headers/linux-libc-headers_4.8.bb   | 13 +++++++
  meta/recipes-kernel/linux/linux-yocto-dev.bb       |  4 +-
  meta/recipes-kernel/linux/linux-yocto-rt_4.1.bb    |  2 +-
  meta/recipes-kernel/linux/linux-yocto-rt_4.4.bb    |  2 +-
  meta/recipes-kernel/linux/linux-yocto-rt_4.8.bb    | 38 +++++++++++++++++++
  meta/recipes-kernel/linux/linux-yocto-tiny_4.1.bb  |  2 +-
  meta/recipes-kernel/linux/linux-yocto-tiny_4.4.bb  |  2 +-
  meta/recipes-kernel/linux/linux-yocto-tiny_4.8.bb  | 25 ++++++++++++
  meta/recipes-kernel/linux/linux-yocto_4.1.bb       |  2 +-
  meta/recipes-kernel/linux/linux-yocto_4.4.bb       |  2 +-
  meta/recipes-kernel/linux/linux-yocto_4.8.bb       | 44 ++++++++++++++++++++++
  meta/recipes-kernel/perf/perf.bb                   |  9 ++++-
  scripts/runqemu-internal                           |  3 ++
  15 files changed, 150 insertions(+), 12 deletions(-)

create mode 100644 meta/recipes-kernel/linux-libc-headers/linux-libc-headers_4.8.bb create mode 100644 meta/recipes-kernel/linux/linux-yocto-rt_4.8.bb create mode 100644 meta/recipes-kernel/linux/linux-yocto-tiny_4.8.bb create mode 100644 meta/recipes-kernel/linux/linux-yocto_4.8.bb

#15 lore raw
In reply to Bruce Ashfield

Just to update I have:

* Put a runqemu patch in master-next that works with new and old kernels to handle the dtb issue
* Updated the musl patches in libc-headers
* Updated lttng-* to avoid build failures with 4.8
* Switched the default qemu kernel 4.4 -> 4.8 in poky so we get testing of 4.8

I'm waiting on the next build so see what issues remain from here.

Cheers,

Richard

#16 lore raw
Quoted 5 lines · Richard Purdie

Just to update I have:

* Put a runqemu patch in master-next that works with new and old kernels to handle the dtb issue

Hmm. I tested 4.4 and 4.8 with the ones that I did.

Quoted 2 lines

* Updated the musl patches in libc-headers

ok. Ignore my previous email on this one!

Quoted 2 lines

* Updated lttng-* to avoid build failures with 4.8

What were you seeing here ? I built lttng and didn't see the failure .. I'm wondering if I was held back on 4.4 when I did those builds. I'll go investigate,
since that is rather annoying as I was explicitly covering perf/lttng to rule that out.

Bruce

Quoted 14 lines

* Switched the default qemu kernel 4.4 -> 4.8 in poky so we get testing of 4.8

I'm waiting on the next build so see what issues remain from here.

Cheers,

Richard
--
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Signature · 2 lines
"Thou shalt not follow the NULL pointer, for chaos and madness await thee
at its end"