diff options
Diffstat (limited to 'meta/recipes-kernel')
144 files changed, 11684 insertions, 5845 deletions
diff --git a/meta/recipes-kernel/blktrace/blktrace/CVE-2018-10689.patch b/meta/recipes-kernel/blktrace/blktrace/CVE-2018-10689.patch deleted file mode 100644 index 7b58568d59..0000000000 --- a/meta/recipes-kernel/blktrace/blktrace/CVE-2018-10689.patch +++ /dev/null @@ -1,150 +0,0 @@ -From d61ff409cb4dda31386373d706ea0cfb1aaac5b7 Mon Sep 17 00:00:00 2001 -From: Jens Axboe <axboe@kernel.dk> -Date: Wed, 2 May 2018 10:24:17 -0600 -Subject: [PATCH] btt: make device/devno use PATH_MAX to avoid overflow - -Herbo Zhang reports: - -I found a bug in blktrace/btt/devmap.c. The code is just as follows: - -https://git.kernel.org/pub/scm/linux/kernel/git/axboe/blktrace.git/tree/btt/devmap.c?id=8349ad2f2d19422a6241f94ea84d696b21de4757 - - struct devmap { - -struct list_head head; -char device[32], devno[32]; // #1 -}; - -LIST_HEAD(all_devmaps); - -static int dev_map_add(char *line) -{ -struct devmap *dmp; - -if (strstr(line, "Device") != NULL) -return 1; - -dmp = malloc(sizeof(struct devmap)); -if (sscanf(line, "%s %s", dmp->device, dmp->devno) != 2) { //#2 -free(dmp); -return 1; -} - -list_add_tail(&dmp->head, &all_devmaps); -return 0; -} - -int dev_map_read(char *fname) -{ -char line[256]; // #3 -FILE *fp = my_fopen(fname, "r"); - -if (!fp) { -perror(fname); -return 1; -} - -while (fscanf(fp, "%255[a-zA-Z0-9 :.,/_-]\n", line) == 1) { -if (dev_map_add(line)) -break; -} - -fclose(fp); -return 0; -} - - The line length is 256, but the dmp->device, dmp->devno max length -is only 32. We can put strings longer than 32 into dmp->device and -dmp->devno , and then they will be overflowed. - - we can trigger this bug just as follows: - - $ python -c "print 'A'*256" > ./test - $ btt -M ./test - - *** Error in btt': free(): invalid next size (fast): 0x000055ad7349b250 *** - ======= Backtrace: ========= - /lib/x86_64-linux-gnu/libc.so.6(+0x777e5)[0x7f7f158ce7e5] - /lib/x86_64-linux-gnu/libc.so.6(+0x7fe0a)[0x7f7f158d6e0a] - /lib/x86_64-linux-gnu/libc.so.6(cfree+0x4c)[0x7f7f158da98c] - btt(+0x32e0)[0x55ad7306f2e0] - btt(+0x2c5f)[0x55ad7306ec5f] - btt(+0x251f)[0x55ad7306e51f] - /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7f7f15877830] - btt(+0x26b9)[0x55ad7306e6b9] - ======= Memory map: ======== - 55ad7306c000-55ad7307f000 r-xp 00000000 08:14 3698139 - /usr/bin/btt - 55ad7327e000-55ad7327f000 r--p 00012000 08:14 3698139 - /usr/bin/btt - 55ad7327f000-55ad73280000 rw-p 00013000 08:14 3698139 - /usr/bin/btt - 55ad73280000-55ad73285000 rw-p 00000000 00:00 0 - 55ad7349a000-55ad734bb000 rw-p 00000000 00:00 0 - [heap] - 7f7f10000000-7f7f10021000 rw-p 00000000 00:00 0 - 7f7f10021000-7f7f14000000 ---p 00000000 00:00 0 - 7f7f15640000-7f7f15656000 r-xp 00000000 08:14 14942237 - /lib/x86_64-linux-gnu/libgcc_s.so.1 - 7f7f15656000-7f7f15855000 ---p 00016000 08:14 14942237 - /lib/x86_64-linux-gnu/libgcc_s.so.1 - 7f7f15855000-7f7f15856000 r--p 00015000 08:14 14942237 - /lib/x86_64-linux-gnu/libgcc_s.so.1 - 7f7f15856000-7f7f15857000 rw-p 00016000 08:14 14942237 - /lib/x86_64-linux-gnu/libgcc_s.so.1 - 7f7f15857000-7f7f15a16000 r-xp 00000000 08:14 14948477 - /lib/x86_64-linux-gnu/libc-2.23.so - 7f7f15a16000-7f7f15c16000 ---p 001bf000 08:14 14948477 - /lib/x86_64-linux-gnu/libc-2.23.so - 7f7f15c16000-7f7f15c1a000 r--p 001bf000 08:14 14948477 - /lib/x86_64-linux-gnu/libc-2.23.so - 7f7f15c1a000-7f7f15c1c000 rw-p 001c3000 08:14 14948477 - /lib/x86_64-linux-gnu/libc-2.23.so - 7f7f15c1c000-7f7f15c20000 rw-p 00000000 00:00 0 - 7f7f15c20000-7f7f15c46000 r-xp 00000000 08:14 14948478 - /lib/x86_64-linux-gnu/ld-2.23.so - 7f7f15e16000-7f7f15e19000 rw-p 00000000 00:00 0 - 7f7f15e42000-7f7f15e45000 rw-p 00000000 00:00 0 - 7f7f15e45000-7f7f15e46000 r--p 00025000 08:14 14948478 - /lib/x86_64-linux-gnu/ld-2.23.so - 7f7f15e46000-7f7f15e47000 rw-p 00026000 08:14 14948478 - /lib/x86_64-linux-gnu/ld-2.23.so - 7f7f15e47000-7f7f15e48000 rw-p 00000000 00:00 0 - 7ffdebe5c000-7ffdebe7d000 rw-p 00000000 00:00 0 - [stack] - 7ffdebebc000-7ffdebebe000 r--p 00000000 00:00 0 - [vvar] - 7ffdebebe000-7ffdebec0000 r-xp 00000000 00:00 0 - [vdso] - ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 - [vsyscall] - [1] 6272 abort btt -M test - -Signed-off-by: Jens Axboe <axboe@kernel.dk> - -Upstream-Status: Backport -[https://git.kernel.org/pub/scm/linux/kernel/git/axboe/blktrace.git/commit/?id=d61ff409cb4dda31386373d706ea0cfb1aaac5b7] - -CVE: CVE-2018-10689 - -Signed-off-by: Yi Zhao <yi.zhao@windriver.com> ---- - btt/devmap.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/btt/devmap.c b/btt/devmap.c -index 0553a9e..5fc1cb2 100644 ---- a/btt/devmap.c -+++ b/btt/devmap.c -@@ -23,7 +23,7 @@ - - struct devmap { - struct list_head head; -- char device[32], devno[32]; -+ char device[PATH_MAX], devno[PATH_MAX]; - }; - - LIST_HEAD(all_devmaps); --- -2.7.4 - diff --git a/meta/recipes-kernel/blktrace/blktrace/ldflags.patch b/meta/recipes-kernel/blktrace/blktrace/ldflags.patch deleted file mode 100644 index ab905cf0da..0000000000 --- a/meta/recipes-kernel/blktrace/blktrace/ldflags.patch +++ /dev/null @@ -1,114 +0,0 @@ -blktrace: obey LDFLAGS - -Upstream-Status: Pending - -Signed-off-by: Christopher Larson <chris_larson@mentor.com> - -the patch was imported from meta-mentor layer on yoctoproject git server -http://git.yoctoproject.org/cgit/cgit.cgi/meta-mentor as of commit id -aed463414e2e2bf8ca44ba54ee5973e7ed599e57 - -Signed-off-by: Fahad Usman <fahad_usman@mentor.com> - -Index: git/Makefile -=================================================================== ---- git.orig/Makefile -+++ git/Makefile -@@ -1,5 +1,6 @@ - CC = gcc - CFLAGS = -Wall -O2 -g -W -+LDFLAGS = - ALL_CFLAGS = $(CFLAGS) -D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 - PROGS = blkparse blktrace verify_blkparse blkrawverify blkiomon - LIBS = -lpthread -@@ -26,19 +27,19 @@ btreplay/btreplay: - $(CC) -o $*.o -c $(ALL_CFLAGS) $< - - blkparse: blkparse.o blkparse_fmt.o rbtree.o act_mask.o -- $(CC) $(ALL_CFLAGS) -o $@ $(filter %.o,$^) -+ $(CC) $(ALL_CFLAGS) -o $@ $(filter %.o,$^) $(LDFLAGS) - - blktrace: blktrace.o act_mask.o -- $(CC) $(ALL_CFLAGS) -o $@ $(filter %.o,$^) $(LIBS) -+ $(CC) $(ALL_CFLAGS) -o $@ $(filter %.o,$^) $(LIBS) $(LDFLAGS) - - verify_blkparse: verify_blkparse.o -- $(CC) $(ALL_CFLAGS) -o $@ $(filter %.o,$^) -+ $(CC) $(ALL_CFLAGS) -o $@ $(filter %.o,$^) $(LDFLAGS) - - blkrawverify: blkrawverify.o -- $(CC) $(ALL_CFLAGS) -o $@ $(filter %.o,$^) -+ $(CC) $(ALL_CFLAGS) -o $@ $(filter %.o,$^) $(LDFLAGS) - - blkiomon: blkiomon.o rbtree.o -- $(CC) $(ALL_CFLAGS) -o $@ $(filter %.o,$^) $(LIBS) -lrt -+ $(CC) $(ALL_CFLAGS) -o $@ $(filter %.o,$^) $(LIBS) -lrt $(LDFLAGS) - - $(PROGS): | depend - -Index: git/btreplay/Makefile -=================================================================== ---- git.orig/btreplay/Makefile -+++ git/btreplay/Makefile -@@ -7,6 +7,7 @@ - - CC = gcc - CFLAGS = -Wall -W -O2 -g -+LDFLAGS = - INCS = -I. -I.. -I../btt - OCFLAGS = -UCOUNT_IOS -UDEBUG -DNDEBUG - XCFLAGS = -D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -@@ -32,10 +33,10 @@ clean: docsclean - $(CC) $(CFLAGS) -c -o $*.o $< - - btrecord: btrecord.o -- $(CC) $(CFLAGS) -o $@ $(filter %.o,$^) -+ $(CC) $(CFLAGS) -o $@ $(filter %.o,$^) $(LDFLAGS) - - btreplay: btreplay.o -- $(CC) $(CFLAGS) -o $@ $(filter %.o,$^) $(LIBS) -+ $(CC) $(CFLAGS) -o $@ $(filter %.o,$^) $(LIBS) $(LDFLAGS) - - depend: - @$(CC) -MM $(CFLAGS) *.c 1> .depend -Index: git/btt/Makefile -=================================================================== ---- git.orig/btt/Makefile -+++ git/btt/Makefile -@@ -7,6 +7,7 @@ - - CC = gcc - CFLAGS = -Wall -W -O2 -g -+LDFLAGS = - INCS = -I. -I.. - XCFLAGS = -D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 - override CFLAGS += $(INCS) $(XCFLAGS) -@@ -38,7 +39,7 @@ clean: docsclean - $(CC) $(CFLAGS) -c -o $*.o $< - - btt: $(OBJS) -- $(CC) $(CFLAGS) -o $@ $(filter %.o,$^) $(LIBS) -+ $(CC) $(CFLAGS) -o $@ $(filter %.o,$^) $(LIBS) $(LDFLAGS) - - ifneq ($(wildcard .depend),) - include .depend -Index: git/iowatcher/Makefile -=================================================================== ---- git.orig/iowatcher/Makefile -+++ git/iowatcher/Makefile -@@ -1,5 +1,6 @@ - CC = gcc - CFLAGS = -Wall -O2 -g -W -Wunused-result -+LDFLAGS = - ALL_CFLAGS = $(CFLAGS) -D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 - - PROGS = iowatcher -@@ -19,7 +20,7 @@ all: $(ALL) - $(CC) -o $*.o -c $(ALL_CFLAGS) $< - - iowatcher: blkparse.o plot.o main.o tracers.o mpstat.o fio.o -- $(CC) $(ALL_CFLAGS) -o $@ $(filter %.o,$^) -lm -lrt -+ $(CC) $(ALL_CFLAGS) -o $@ $(filter %.o,$^) -lm $(LDFLAGS) -lrt - - depend: - @$(CC) -MM $(ALL_CFLAGS) *.c 1> .depend diff --git a/meta/recipes-kernel/blktrace/blktrace_git.bb b/meta/recipes-kernel/blktrace/blktrace_git.bb index 2605ff9167..d4f5bac84f 100644 --- a/meta/recipes-kernel/blktrace/blktrace_git.bb +++ b/meta/recipes-kernel/blktrace/blktrace_git.bb @@ -1,18 +1,20 @@ SUMMARY = "Generates traces of I/O traffic on block devices" +DESCRIPTION = "blktrace is a block layer IO tracing mechanism which provides \ +detailed information about request queue operations up to user space. There \ +are three major components: a kernel component, a utility to record the i/o \ +trace information for the kernel to user space, and utilities to analyse and \ +view the trace information." HOMEPAGE = "http://brick.kernel.dk/snaps/" -LICENSE = "GPLv2" +LICENSE = "GPL-2.0-only" LIC_FILES_CHKSUM = "file://COPYING;md5=393a5ca445f6965873eca0259a17f833" DEPENDS = "libaio" -SRCREV = "cca113f2fe0759b91fd6a0e10fdcda2c28f18a7e" +SRCREV = "366d30b9cdb20345c5d064af850d686da79b89eb" -PV = "1.2.0+git${SRCPV}" +PV = "1.3.0+git" -SRC_URI = "git://git.kernel.dk/blktrace.git \ - file://ldflags.patch \ - file://CVE-2018-10689.patch \ -" +SRC_URI = "git://git.kernel.dk/blktrace.git;branch=master;protocol=https" S = "${WORKDIR}/git" diff --git a/meta/recipes-kernel/cryptodev/cryptodev-linux_1.10.bb b/meta/recipes-kernel/cryptodev/cryptodev-linux_1.13.bb index c55577c661..d5ea9d8529 100644 --- a/meta/recipes-kernel/cryptodev/cryptodev-linux_1.10.bb +++ b/meta/recipes-kernel/cryptodev/cryptodev-linux_1.13.bb @@ -9,5 +9,5 @@ do_install() { install -D ${S}/crypto/cryptodev.h ${D}${includedir}/crypto/cryptodev.h } -ALLOW_EMPTY_${PN} = "1" +ALLOW_EMPTY:${PN} = "1" BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-kernel/cryptodev/cryptodev-module_1.10.bb b/meta/recipes-kernel/cryptodev/cryptodev-module_1.13.bb index 552eb6abaa..5192cf03ed 100644 --- a/meta/recipes-kernel/cryptodev/cryptodev-module_1.10.bb +++ b/meta/recipes-kernel/cryptodev/cryptodev-module_1.13.bb @@ -7,11 +7,10 @@ inherit module # Header file provided by a separate package DEPENDS += "cryptodev-linux" -SRC_URI += " \ -file://0001-Disable-installing-header-file-provided-by-another-p.patch \ -" +SRC_URI += "file://0001-Disable-installing-header-file-provided-by-another-p.patch \ + " EXTRA_OEMAKE='KERNEL_DIR="${STAGING_KERNEL_DIR}" PREFIX="${D}"' -RCONFLICTS_${PN} = "ocf-linux" -RREPLACES_${PN} = "ocf-linux" +RCONFLICTS:${PN} = "ocf-linux" +RREPLACES:${PN} = "ocf-linux" diff --git a/meta/recipes-kernel/cryptodev/cryptodev-tests_1.10.bb b/meta/recipes-kernel/cryptodev/cryptodev-tests_1.13.bb index 9cb5dcb94f..458ad8ecf2 100644 --- a/meta/recipes-kernel/cryptodev/cryptodev-tests_1.10.bb +++ b/meta/recipes-kernel/cryptodev/cryptodev-tests_1.13.bb @@ -5,17 +5,17 @@ SUMMARY = "A test suite for /dev/crypto device driver" DEPENDS += "openssl" SRC_URI += " \ -file://0001-Add-the-compile-and-install-rules-for-cryptodev-test.patch \ -" + file://0001-tests-Makefile-do-not-use-Werror.patch \ + " EXTRA_OEMAKE='KERNEL_DIR="${STAGING_EXECPREFIXDIR}" PREFIX="${D}"' do_compile() { - oe_runmake testprogs + oe_runmake tests } do_install() { oe_runmake install_tests } -FILES_${PN} = "${bindir}/*" +FILES:${PN} = "${bindir}/*" diff --git a/meta/recipes-kernel/cryptodev/cryptodev.inc b/meta/recipes-kernel/cryptodev/cryptodev.inc index 9d8ba44058..64a9c2926b 100644 --- a/meta/recipes-kernel/cryptodev/cryptodev.inc +++ b/meta/recipes-kernel/cryptodev/cryptodev.inc @@ -1,12 +1,17 @@ HOMEPAGE = "http://cryptodev-linux.org/" +DESCRIPTION = "Cryptodev-linux is a device that allows access to Linux kernel \ +cryptographic drivers; thus allowing of userspace applications to take advantage \ +of hardware accelerators. Cryptodev-linux is implemented as a standalone \ +module that requires no dependencies other than a stock linux kernel. Its \ +API is compatible with OpenBSD's cryptodev userspace API (/dev/crypto)." -LICENSE = "GPLv2" +LICENSE = "GPL-2.0-only" LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263" -SRC_URI = "git://github.com/cryptodev-linux/cryptodev-linux \ - file://0001-Fix-module-loading-with-Linux-v5.0-rc5.patch \ +SRC_URI = "git://github.com/cryptodev-linux/cryptodev-linux;branch=master;protocol=https \ " -SRCREV = "fd8b15ef1c8398a69a37932ee48c74ab40329a29" +SRCREV = "bb8bc7cf60d2c0b097c8b3b0e807f805b577a53f" +PV = "1.13+git${SRCPV}" S = "${WORKDIR}/git" diff --git a/meta/recipes-kernel/cryptodev/files/0001-Add-the-compile-and-install-rules-for-cryptodev-test.patch b/meta/recipes-kernel/cryptodev/files/0001-Add-the-compile-and-install-rules-for-cryptodev-test.patch deleted file mode 100644 index 84fd27e681..0000000000 --- a/meta/recipes-kernel/cryptodev/files/0001-Add-the-compile-and-install-rules-for-cryptodev-test.patch +++ /dev/null @@ -1,66 +0,0 @@ -From 1980a8f4779a955e73285e7a0d86549b69bea5c8 Mon Sep 17 00:00:00 2001 -From: Yu Zongchun <b40527@freescale.com> -Date: Sun, 28 Apr 2013 14:39:22 +0800 -Subject: [PATCH] Add the compile and install rules for cryptodev tests folder - -This is required to install the cryptodev tests folder to rootfs - -Signed-off-by: Yu Zongchun <b40527@freescale.com> - -Upstream-Status: Pending - ---- - Makefile | 6 ++++++ - tests/Makefile | 8 ++++++++ - 2 files changed, 14 insertions(+), 0 deletions(-) - -Index: git/Makefile -=================================================================== ---- git.orig/Makefile -+++ git/Makefile -@@ -35,6 +35,9 @@ modules_install: - $(MAKE) $(KERNEL_MAKE_OPTS) modules_install - install -m 644 -D crypto/cryptodev.h $(DESTDIR)/$(includedir)/crypto/cryptodev.h - -+install_tests: -+ make -C tests install DESTDIR=$(PREFIX) -+ - clean: - $(MAKE) $(KERNEL_MAKE_OPTS) clean - rm -f $(hostprogs) *~ -@@ -43,6 +46,9 @@ clean: - check: - CFLAGS=$(CRYPTODEV_CFLAGS) KERNEL_DIR=$(KERNEL_DIR) $(MAKE) -C tests check - -+testprogs: -+ KERNEL_DIR=$(KERNEL_DIR) make -C tests testprogs -+ - CPOPTS = - ifneq ($(SHOW_TYPES),) - CPOPTS += --show-types -Index: git/tests/Makefile -=================================================================== ---- git.orig/tests/Makefile -+++ git/tests/Makefile -@@ -23,6 +23,12 @@ bindir = $(execprefix)/bin - - all: $(hostprogs) - -+install: -+ install -d $(DESTDIR)/usr/bin/tests_cryptodev -+ for bin in $(hostprogs); do \ -+ install -m 755 $${bin} $(DESTDIR)/usr/bin/tests_cryptodev/; \ -+ done -+ - check: $(hostprogs) - ./cipher - ./hmac -@@ -38,6 +44,8 @@ install: - install -m 755 $$prog $(DESTDIR)/$(bindir); \ - done - -+testprogs: $(hostprogs) -+ - clean: - rm -f *.o *~ $(hostprogs) - diff --git a/meta/recipes-kernel/cryptodev/files/0001-Disable-installing-header-file-provided-by-another-p.patch b/meta/recipes-kernel/cryptodev/files/0001-Disable-installing-header-file-provided-by-another-p.patch index 885b5823e4..c7fdef4da4 100644 --- a/meta/recipes-kernel/cryptodev/files/0001-Disable-installing-header-file-provided-by-another-p.patch +++ b/meta/recipes-kernel/cryptodev/files/0001-Disable-installing-header-file-provided-by-another-p.patch @@ -1,4 +1,4 @@ -From 8a884f55bd1527baa82fab68c186ba546273860c Mon Sep 17 00:00:00 2001 +From 66d85d3f26e21cf7c38b27de0dcc42376f5d853e Mon Sep 17 00:00:00 2001 From: Denys Dmytriyenko <denys@ti.com> Date: Sun, 6 Apr 2014 19:51:39 -0400 Subject: [PATCH] Disable installing header file provided by another package @@ -6,19 +6,20 @@ Subject: [PATCH] Disable installing header file provided by another package Signed-off-by: Denys Dmytriyenko <denys@ti.com> Upstream-Status: Inappropriate [ OE specific ] + --- Makefile | 1 - 1 file changed, 1 deletion(-) diff --git a/Makefile b/Makefile -index 5a080e0..bf02396 100644 +index d83aee6..c8d8ae5 100644 --- a/Makefile +++ b/Makefile -@@ -33,7 +33,6 @@ install: modules_install +@@ -36,7 +36,6 @@ install: modules_install modules_install: $(MAKE) $(KERNEL_MAKE_OPTS) modules_install - install -m 644 -D crypto/cryptodev.h $(DESTDIR)/$(includedir)/crypto/cryptodev.h - clean: - $(MAKE) $(KERNEL_MAKE_OPTS) clean + install_tests: tests + $(MAKE) -C tests install DESTDIR=$(PREFIX) diff --git a/meta/recipes-kernel/cryptodev/files/0001-Fix-module-loading-with-Linux-v5.0-rc5.patch b/meta/recipes-kernel/cryptodev/files/0001-Fix-module-loading-with-Linux-v5.0-rc5.patch deleted file mode 100644 index 34ec87272f..0000000000 --- a/meta/recipes-kernel/cryptodev/files/0001-Fix-module-loading-with-Linux-v5.0-rc5.patch +++ /dev/null @@ -1,59 +0,0 @@ -Upstream-Status: Backport [https://github.com/cryptodev-linux/cryptodev-linux/commit/f971e0c] - -Backport patch from upstream to fix module cryptodev loading error. - -Signed-off-by: Kai Kang <kai.kang@windriver.com> - -From f971e0cd4a0ebe59fb2e8e17240399bf6901b09b Mon Sep 17 00:00:00 2001 -From: "Derald D. Woods" <woods.technical@gmail.com> -Date: Sun, 10 Feb 2019 13:22:19 -0600 -Subject: [PATCH] Fix module loading with Linux v5.0-rc5 - -This commit fixes this module load error: -[...] -[ 29.112091] cryptodev: loading out-of-tree module taints kernel. -[ 29.128906] cryptodev: Unknown symbol crypto_givcipher_type (err -2) -[ 29.188842] cryptodev: Unknown symbol crypto_givcipher_type (err -2) -modprobe: can't load module cryptodev (extra/cryptodev.ko): unknown symbol in module, or unknown parameter -[...] - -Upstream Linux support for unused GIVCIPHER, and others, was dropped here: - -c79b411eaa72 (crypto: skcipher - remove remnants of internal IV generators) - -Signed-off-by: Derald D. Woods <woods.technical@gmail.com> ---- - cryptlib.c | 9 +++++++-- - 1 file changed, 7 insertions(+), 2 deletions(-) - -diff --git a/cryptlib.c b/cryptlib.c -index 6e66698..4a87037 100644 ---- a/cryptlib.c -+++ b/cryptlib.c -@@ -38,7 +38,9 @@ - #include "cryptodev_int.h" - #include "cipherapi.h" - -+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 0, 0)) - extern const struct crypto_type crypto_givcipher_type; -+#endif - - static void cryptodev_complete(struct crypto_async_request *req, int err) - { -@@ -157,8 +159,11 @@ int cryptodev_cipher_init(struct cipher_data *out, const char *alg_name, - - #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)) - tfm = crypto_skcipher_tfm(out->async.s); -- if ((tfm->__crt_alg->cra_type == &crypto_ablkcipher_type) || -- (tfm->__crt_alg->cra_type == &crypto_givcipher_type)) { -+ if ((tfm->__crt_alg->cra_type == &crypto_ablkcipher_type) -+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 0, 0)) -+ || (tfm->__crt_alg->cra_type == &crypto_givcipher_type) -+#endif -+ ) { - struct ablkcipher_alg *alg; - - alg = &tfm->__crt_alg->cra_ablkcipher; --- -2.20.0 - diff --git a/meta/recipes-kernel/cryptodev/files/0001-tests-Makefile-do-not-use-Werror.patch b/meta/recipes-kernel/cryptodev/files/0001-tests-Makefile-do-not-use-Werror.patch new file mode 100644 index 0000000000..3285548a57 --- /dev/null +++ b/meta/recipes-kernel/cryptodev/files/0001-tests-Makefile-do-not-use-Werror.patch @@ -0,0 +1,25 @@ +From 47438e53e1156db0916c0f4683a24fe4d82152f2 Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <alex@linutronix.de> +Date: Fri, 10 Sep 2021 10:44:42 +0200 +Subject: [PATCH] tests/Makefile: do not use -Werror + +Otherwise, openssl 3 deprecation warnings become errors. +Reported at https://github.com/cryptodev-linux/cryptodev-linux/issues/67 + +Upstream-Status: Inappropriate [upstream needs to update the code] +Signed-off-by: Alexander Kanavin <alex@linutronix.de> + +--- + tests/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tests/Makefile b/tests/Makefile +index 2fb7a9a..e94f80e 100644 +--- a/tests/Makefile ++++ b/tests/Makefile +@@ -1,4 +1,4 @@ +-CFLAGS += -I.. $(CRYPTODEV_CFLAGS) -Wall -Werror ++CFLAGS += -I.. $(CRYPTODEV_CFLAGS) -Wall + + comp_progs := cipher_comp hash_comp hmac_comp + diff --git a/meta/recipes-kernel/dtc/dtc.inc b/meta/recipes-kernel/dtc/dtc.inc deleted file mode 100644 index 7a923bf520..0000000000 --- a/meta/recipes-kernel/dtc/dtc.inc +++ /dev/null @@ -1,24 +0,0 @@ -SUMMARY = "Device Tree Compiler" -HOMEPAGE = "https://devicetree.org/" -DESCRIPTION = "The Device Tree Compiler is a tool used to manipulate the Open-Firmware-like device tree used by PowerPC kernels." -SECTION = "bootloader" -LICENSE = "GPLv2 | BSD" -DEPENDS = "flex-native bison-native" - -SRC_URI = "git://git.kernel.org/pub/scm/utils/dtc/dtc.git \ - file://make_install.patch \ - " -UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+(\.\d+)+)" - -EXTRA_OEMAKE='NO_PYTHON=1 PREFIX="${prefix}" LIBDIR="${libdir}" DESTDIR="${D}"' - -S = "${WORKDIR}/git" - -do_install () { - oe_runmake install -} - -PACKAGES =+ "${PN}-misc" -FILES_${PN}-misc = "${bindir}/convert-dtsv0 ${bindir}/ftdump ${bindir}/dtdiff" - -RDEPENDS_${PN}-misc += "bash diffutils" diff --git a/meta/recipes-kernel/dtc/dtc/0001-meson.build-bump-version-to-1.7.0.patch b/meta/recipes-kernel/dtc/dtc/0001-meson.build-bump-version-to-1.7.0.patch new file mode 100644 index 0000000000..79a3b92b44 --- /dev/null +++ b/meta/recipes-kernel/dtc/dtc/0001-meson.build-bump-version-to-1.7.0.patch @@ -0,0 +1,29 @@ +From 9153522103bd4ed7e3299c4d073f66bb37cb2d42 Mon Sep 17 00:00:00 2001 +From: Nikolay Letov <letov.nikolay@gmail.com> +Date: Wed, 22 Feb 2023 13:36:07 +0300 +Subject: [PATCH 1/2] meson.build: bump version to 1.7.0 + +[This was botched in the actual 1.7.0 release :( - David Gibson] + +Upstream-Status: Backport [https://git.kernel.org/pub/scm/utils/dtc/dtc.git/commit/?id=64a907f08b9bedd89833c1eee674148cff2343c6] + +Signed-off-by: Nikolay Letov <letov.nikolay@gmail.com> +Signed-off-by: Peter Marko <peter.marko@siemens.com> +--- + meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/meson.build b/meson.build +index 78251eb..d88cd9f 100644 +--- a/meson.build ++++ b/meson.build +@@ -1,5 +1,5 @@ + project('dtc', 'c', +- version: '1.6.0', ++ version: '1.7.0', + license: ['GPL2+', 'BSD-2'], + default_options: 'werror=true', + ) +-- +2.30.2 + diff --git a/meta/recipes-kernel/dtc/dtc/0002-meson-allow-building-from-shallow-clones.patch b/meta/recipes-kernel/dtc/dtc/0002-meson-allow-building-from-shallow-clones.patch new file mode 100644 index 0000000000..0284905913 --- /dev/null +++ b/meta/recipes-kernel/dtc/dtc/0002-meson-allow-building-from-shallow-clones.patch @@ -0,0 +1,38 @@ +From 4415b0baece3c4351a6d3637c2754abbefd4795d Mon Sep 17 00:00:00 2001 +From: Peter Marko <peter.marko@siemens.com> +Date: Sat, 16 Dec 2023 18:58:31 +0100 +Subject: [PATCH 2/2] meson: allow building from shallow clones + +When building from shallow clone, tag is not available +and version defaults to git hash. +Problem is that some builds check DTC version and fail the comparison. +Example is https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git +Which fails to build with following error: +dtc version too old (039a994), you need at least version 1.4.4 + +Drop --always from git describe command, see +https://github.com/mesonbuild/meson/blob/1.3.0/mesonbuild/utils/universal.py#L773 +This will make it more closer to build via Makefile. + +Upstream-Status: Submitted [https://github.com/dgibson/dtc/pull/122] + +Signed-off-by: Peter Marko <peter.marko@siemens.com> +--- + meson.build | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/meson.build b/meson.build +index 78251eb..fc0c92a 100644 +--- a/meson.build ++++ b/meson.build +@@ -56,6 +56,7 @@ py = py.find_installation(required: get_option('python')) + swig = find_program('swig', required: get_option('python')) + + version_gen_h = vcs_tag( ++ command: ['git', 'describe', '--dirty=+'], + input: 'version_gen.h.in', + output: 'version_gen.h', + ) +-- +2.30.2 + diff --git a/meta/recipes-kernel/dtc/dtc/make_install.patch b/meta/recipes-kernel/dtc/dtc/make_install.patch deleted file mode 100644 index ea9359e815..0000000000 --- a/meta/recipes-kernel/dtc/dtc/make_install.patch +++ /dev/null @@ -1,26 +0,0 @@ -From e9852b9d206df1e42aa4c8afec55a0f5e099b533 Mon Sep 17 00:00:00 2001 -From: Saul Wold <sgw@linux.intel.com> -Date: Thu, 3 Nov 2011 08:35:47 -0700 -Subject: [PATCH] dtc: Add patch to correctly install shared libraries and - -Upstream-Status: Inappropriate [configuration] - ---- - Makefile | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/Makefile b/Makefile -index d8ebc4f..f5e01be 100644 ---- a/Makefile -+++ b/Makefile -@@ -205,8 +205,8 @@ install-bin: all $(SCRIPTS) - install-lib: all - @$(VECHO) INSTALL-LIB - $(INSTALL) -d $(DESTDIR)$(LIBDIR) -- $(INSTALL_LIB) $(LIBFDT_lib) $(DESTDIR)$(LIBDIR) -- ln -sf $(notdir $(LIBFDT_lib)) $(DESTDIR)$(LIBDIR)/$(LIBFDT_soname) -+ $(INSTALL) $(LIBFDT_lib) $(DESTDIR)$(LIBDIR)/$(LIBFDT_soname) -+ ln -sf $(LIBFDT_soname) $(DESTDIR)$(LIBDIR)/$(notdir $(LIBFDT_lib)) - ln -sf $(LIBFDT_soname) $(DESTDIR)$(LIBDIR)/libfdt.$(SHAREDLIB_EXT) - $(INSTALL_DATA) $(LIBFDT_archive) $(DESTDIR)$(LIBDIR) - diff --git a/meta/recipes-kernel/dtc/dtc_1.4.7.bb b/meta/recipes-kernel/dtc/dtc_1.4.7.bb deleted file mode 100644 index 6ce462a7f4..0000000000 --- a/meta/recipes-kernel/dtc/dtc_1.4.7.bb +++ /dev/null @@ -1,10 +0,0 @@ -require dtc.inc - -LIC_FILES_CHKSUM = "file://GPL;md5=94d55d512a9ba36caa9b7df079bae19f \ - file://libfdt/libfdt.h;beginline=3;endline=52;md5=fb360963151f8ec2d6c06b055bcbb68c" - -SRCREV = "88f18909db731a627456f26d779445f84e449536" - -S = "${WORKDIR}/git" - -BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-kernel/dtc/dtc_1.7.0.bb b/meta/recipes-kernel/dtc/dtc_1.7.0.bb new file mode 100644 index 0000000000..0702fc16df --- /dev/null +++ b/meta/recipes-kernel/dtc/dtc_1.7.0.bb @@ -0,0 +1,34 @@ +SUMMARY = "Device Tree Compiler" +HOMEPAGE = "https://devicetree.org/" +DESCRIPTION = "The Device Tree Compiler is a toolchain for working with device tree source and binary files." +SECTION = "bootloader" +LICENSE = "GPL-2.0-only | BSD-2-Clause" + +LIC_FILES_CHKSUM = "file://GPL;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ + file://BSD-2-Clause;md5=5d6306d1b08f8df623178dfd81880927 \ + file://README.license;md5=a1eb22e37f09df5b5511b8a278992d0e" + +SRC_URI = " \ + git://git.kernel.org/pub/scm/utils/dtc/dtc.git;branch=main;protocol=https \ + file://0001-meson.build-bump-version-to-1.7.0.patch \ + file://0002-meson-allow-building-from-shallow-clones.patch \ +" +SRCREV = "039a99414e778332d8f9c04cbd3072e1dcc62798" + +UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+(\.\d+)+)" + +S = "${WORKDIR}/git" + +inherit meson pkgconfig + +EXTRA_OEMESON = "-Dpython=disabled -Dvalgrind=disabled" + +PACKAGECONFIG ??= "tools" +PACKAGECONFIG[tools] = "-Dtools=true,-Dtools=false,flex-native bison-native" +PACKAGECONFIG[yaml] = "-Dyaml=enabled,-Dyaml=disabled,libyaml" + +PACKAGES =+ "${PN}-misc" +FILES:${PN}-misc = "${bindir}/convert-dtsv0 ${bindir}/ftdump ${bindir}/dtdiff" +RDEPENDS:${PN}-misc += "${@bb.utils.contains('PACKAGECONFIG', 'tools', 'bash diffutils', '', d)}" + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-kernel/dtc/python3-dtschema-wrapper/dt-doc-validate b/meta/recipes-kernel/dtc/python3-dtschema-wrapper/dt-doc-validate new file mode 100644 index 0000000000..2aa57851c7 --- /dev/null +++ b/meta/recipes-kernel/dtc/python3-dtschema-wrapper/dt-doc-validate @@ -0,0 +1,20 @@ +#!/bin/sh +# dt-doc-validate wrapper to allow kernel dt-validation to pass +# +# Copyright (C) 2021 Bruce Ashfield <bruce.ashfield@gmail.com> +# License: MIT (see COPYING.MIT at the root of the repository for terms) + +for arg; do + case "$arg" in + --version) + echo "v2021.10" + ;; + esac +done + +# TBD: left for future consideration +# exec dt-doc-validate.real "$@" + +# we always succeed +exit 0 + diff --git a/meta/recipes-kernel/dtc/python3-dtschema-wrapper/dt-mk-schema b/meta/recipes-kernel/dtc/python3-dtschema-wrapper/dt-mk-schema new file mode 100644 index 0000000000..24b89d8619 --- /dev/null +++ b/meta/recipes-kernel/dtc/python3-dtschema-wrapper/dt-mk-schema @@ -0,0 +1,20 @@ +#!/bin/sh +# dt-mk-schema wrapper to allow kernel dt-validation to pass +# +# Copyright (C) 2021 Bruce Ashfield <bruce.ashfield@gmail.com> +# License: MIT (see COPYING.MIT at the root of the repository for terms) + +for arg; do + case "$arg" in + --version) + echo "v2021.10" + ;; + esac +done + +# TBD: left for future consideration +# exec dt-mk-schema.real "$@" + +# we always succeed +exit 0 + diff --git a/meta/recipes-kernel/dtc/python3-dtschema-wrapper/dt-validate b/meta/recipes-kernel/dtc/python3-dtschema-wrapper/dt-validate new file mode 100644 index 0000000000..8a4710a7ed --- /dev/null +++ b/meta/recipes-kernel/dtc/python3-dtschema-wrapper/dt-validate @@ -0,0 +1,20 @@ +#!/bin/sh +# dt-validate wrapper to allow kernel dt-validation to pass +# +# Copyright (C) 2021 Bruce Ashfield <bruce.ashfield@gmail.com> +# License: MIT (see COPYING.MIT at the root of the repository for terms) + +for arg; do + case "$arg" in + --version) + echo "v2021.10" + ;; + esac +done + +# TBD: left for future consideration +# exec dt-validate.real "$@" + +# we always succeed +exit 0 + diff --git a/meta/recipes-kernel/dtc/python3-dtschema-wrapper_2021.10.bb b/meta/recipes-kernel/dtc/python3-dtschema-wrapper_2021.10.bb new file mode 100644 index 0000000000..974fcba876 --- /dev/null +++ b/meta/recipes-kernel/dtc/python3-dtschema-wrapper_2021.10.bb @@ -0,0 +1,17 @@ +SUMMARY = "Wrapper for tooling for devicetree validation using YAML and jsonschema" +HOMEPAGE = "https://yoctoproject.org" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" + +SRC_URI = "file://dt-doc-validate \ + file://dt-mk-schema \ + file://dt-validate" + +do_install() { + install -d ${D}${bindir}/ + install -m 755 ${WORKDIR}/dt-doc-validate ${D}${bindir}/ + install -m 755 ${WORKDIR}/dt-mk-schema ${D}${bindir}/ + install -m 755 ${WORKDIR}/dt-validate ${D}${bindir}/ +} + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-kernel/kern-tools/kern-tools-native_git.bb b/meta/recipes-kernel/kern-tools/kern-tools-native_git.bb index 5c1d7f691f..8eff00821a 100644 --- a/meta/recipes-kernel/kern-tools/kern-tools-native_git.bb +++ b/meta/recipes-kernel/kern-tools/kern-tools-native_git.bb @@ -1,24 +1,32 @@ SUMMARY = "Tools for managing Yocto Project style branched kernels" -LICENSE = "GPLv2" -LIC_FILES_CHKSUM = "file://git/tools/kgit;beginline=5;endline=9;md5=a6c2fa8aef1bda400e2828845ba0d06c" +DESCRIPTION = "Powerful set of tools or managing Yocto Linux kernel sources \ +and configuration data. You can use these tools to make a single configuration \ +change, apply multiple patches, or work with your own kernel sources." +HOMEPAGE = "https://www.yoctoproject.org/" +LICENSE = "GPL-2.0-only & MIT" +LIC_FILES_CHKSUM = "\ + file://tools/kgit;beginline=5;endline=9;md5=9c30e971d435e249624278c3e343e501 \ + file://Kconfiglib/LICENSE.txt;md5=712177a72a3937909543eda3ad1bfb7c \ +" -DEPENDS = "git-native" +DEPENDS += "git-replacement-native" -SRCREV = "af1a779f662c81da521e4d602f3c6446547d12a2" -PR = "r12" -PV = "0.2+git${SRCPV}" +SRCREV = "7160ebe8b865dd6028aef278efa219433db93f7e" +PV = "0.3+git" inherit native -SRC_URI = "git://git.yoctoproject.org/yocto-kernel-tools.git" -S = "${WORKDIR}" -UPSTREAM_CHECK_COMMITS = "1" +SRC_URI = "git://git.yoctoproject.org/yocto-kernel-tools.git;branch=master;protocol=https" +S = "${WORKDIR}/git" + +do_configure() { + : +} do_compile() { : } do_install() { - cd ${S}/git - make DESTDIR=${D}${bindir} install + oe_runmake DESTDIR=${D}${bindir} install } diff --git a/meta/recipes-kernel/kexec/kexec-tools/0001-arm64-kexec-disabled-check-if-kaslr-seed-dtb-propert.patch b/meta/recipes-kernel/kexec/kexec-tools/0001-arm64-kexec-disabled-check-if-kaslr-seed-dtb-propert.patch new file mode 100644 index 0000000000..ddc1519126 --- /dev/null +++ b/meta/recipes-kernel/kexec/kexec-tools/0001-arm64-kexec-disabled-check-if-kaslr-seed-dtb-propert.patch @@ -0,0 +1,70 @@ +From d48ec5e1a5fb7907520dee71b1d94045486a0c29 Mon Sep 17 00:00:00 2001 +From: Alexander Kamensky <alexander.kamensky42@gmail.com> +Date: Thu, 12 Nov 2020 12:56:46 -0800 +Subject: [PATCH] arm64: kexec: disabled check if kaslr-seed dtb property was + wiped + +Kexec when loading arm64 kernel checks if chosen/kaslr-seed dtb property is +wiped. It's a good assertion to verify proper behavior of kernel. However, +if bootloader creates and fills kaslr-seed property and kernel is not +configured with CONFIG_RANDOMIZE_BASE then logic of reading and wiping +kaslr-seed does not run. As a result kaslr-seed property is not zero and when +kexec tries to load secondary kernel it fails with the following message: + +setup_2nd_dtb: kaslr-seed is not wiped to 0. +kexec: setup_2nd_dtb failed. +kexec: load failed. + +This was observed on Yocto Project on qemuarm64 machine with 5.8 kernel, +qemu 5.1.0. Qemu created kaslr-seed property but kernel was not configured +with CONFIG_RANDOMIZE_BASE. + +Although check has some value, there is a use-case where it breaks kexec, +this patch removes it. + +Note in described use-case the fact that kaslr-seed is not wiped and user +readable through /sys/firmware/fdt or +/sys/firmware/devicetree/base/chosen/kaslr-seed is not a security problem +as kaslr is disabled anyway. + +Signed-off-by: Alexander Kamensky <alexander.kamensky42@gmail.com> +Upstream-Status: Submitted [http://lists.infradead.org/pipermail/kexec/2020-November/021740.html] +--- + kexec/arch/arm64/kexec-arm64.c | 14 +------------- + 1 file changed, 1 insertion(+), 13 deletions(-) + +diff --git a/kexec/arch/arm64/kexec-arm64.c b/kexec/arch/arm64/kexec-arm64.c +index ec6df4b..10238d9 100644 +--- a/kexec/arch/arm64/kexec-arm64.c ++++ b/kexec/arch/arm64/kexec-arm64.c +@@ -503,7 +503,7 @@ static int setup_2nd_dtb(struct dtb *dtb, char *command_line, int on_crash) + int len, range_len; + int nodeoffset; + int new_size; +- int i, result, kaslr_seed; ++ int i, result; + + result = fdt_check_header(dtb->buf); + +@@ -576,18 +576,6 @@ static int setup_2nd_dtb(struct dtb *dtb, char *command_line, int on_crash) + return result; + } + } else { +- kaslr_seed = fdt64_to_cpu(*prop); +- +- /* kaslr_seed must be wiped clean by primary +- * kernel during boot +- */ +- if (kaslr_seed != 0) { +- dbgprintf("%s: kaslr-seed is not wiped to 0.\n", +- __func__); +- result = -EINVAL; +- goto on_error; +- } +- + /* + * Invoke the getrandom system call with + * GRND_NONBLOCK, to make sure we +-- +2.25.1 + diff --git a/meta/recipes-kernel/kexec/kexec-tools/0002-powerpc-change-the-memory-size-limit.patch b/meta/recipes-kernel/kexec/kexec-tools/0001-powerpc-change-the-memory-size-limit.patch index dc97d930e9..029650f35c 100644 --- a/meta/recipes-kernel/kexec/kexec-tools/0002-powerpc-change-the-memory-size-limit.patch +++ b/meta/recipes-kernel/kexec/kexec-tools/0001-powerpc-change-the-memory-size-limit.patch @@ -1,4 +1,4 @@ -From b19b68eab567aa534cf8dec79fe18e3dc0e14043 Mon Sep 17 00:00:00 2001 +From 211cae4b6a02a4d9d37bfcd76f3702696e095fc3 Mon Sep 17 00:00:00 2001 From: Quanyang Wang <quanyang.wang@windriver.com> Date: Tue, 16 Jun 2015 12:59:57 +0800 Subject: [PATCH] powerpc: change the memory size limit @@ -20,11 +20,11 @@ Signed-off-by: Quanyang Wang <quanyang.wang@windriver.com> kexec/arch/ppc/kexec-ppc.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: kexec-tools-2.0.10/kexec/arch/ppc/kexec-ppc.h -=================================================================== ---- kexec-tools-2.0.10.orig/kexec/arch/ppc/kexec-ppc.h -+++ kexec-tools-2.0.10/kexec/arch/ppc/kexec-ppc.h -@@ -42,7 +42,7 @@ void dol_ppc_usage(void); +diff --git a/kexec/arch/ppc/kexec-ppc.h b/kexec/arch/ppc/kexec-ppc.h +index 04e728e..6bae9ec 100644 +--- a/kexec/arch/ppc/kexec-ppc.h ++++ b/kexec/arch/ppc/kexec-ppc.h +@@ -44,7 +44,7 @@ void dol_ppc_usage(void); * During inital setup the kernel does not map the whole memory but a part of * it. On Book-E that is 64MiB, 601 24MiB or 256MiB (if possible). */ diff --git a/meta/recipes-kernel/kexec/kexec-tools/0001-purgatory-Pass-r-directly-to-linker.patch b/meta/recipes-kernel/kexec/kexec-tools/0002-purgatory-Pass-r-directly-to-linker.patch index bfd077daf0..a537ac2f0b 100644 --- a/meta/recipes-kernel/kexec/kexec-tools/0001-purgatory-Pass-r-directly-to-linker.patch +++ b/meta/recipes-kernel/kexec/kexec-tools/0002-purgatory-Pass-r-directly-to-linker.patch @@ -1,4 +1,4 @@ -From a1135b3170963ba956f2364c1283864c35541295 Mon Sep 17 00:00:00 2001 +From e5bc9fbd6029057a4e3815a5326af5bd83a450e6 Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> Date: Mon, 7 Sep 2015 07:59:45 +0000 Subject: [PATCH] purgatory: Pass -r directly to linker @@ -8,14 +8,15 @@ where as gcc knows how to deal with it and passes it down to linker unfiltered Signed-off-by: Khem Raj <raj.khem@gmail.com> ---- + Upstream-Status: Pending +--- purgatory/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/purgatory/Makefile b/purgatory/Makefile -index 2b5c061..b251353 100644 +index 4d2d071..6673423 100644 --- a/purgatory/Makefile +++ b/purgatory/Makefile @@ -61,7 +61,7 @@ $(PURGATORY): CPPFLAGS=$($(ARCH)_PURGATORY_EXTRA_CFLAGS) \ @@ -27,6 +28,3 @@ index 2b5c061..b251353 100644 -Wl,-Map=$(PURGATORY_MAP) $(PURGATORY): $(PURGATORY_OBJS) --- -2.5.1 - diff --git a/meta/recipes-kernel/kexec/kexec-tools/0010-kexec-ARM-Fix-add_buffer_phys_virt-align-issue.patch b/meta/recipes-kernel/kexec/kexec-tools/0003-kexec-ARM-Fix-add_buffer_phys_virt-align-issue.patch index 6c6c66d885..e874a8b4f1 100644 --- a/meta/recipes-kernel/kexec/kexec-tools/0010-kexec-ARM-Fix-add_buffer_phys_virt-align-issue.patch +++ b/meta/recipes-kernel/kexec/kexec-tools/0003-kexec-ARM-Fix-add_buffer_phys_virt-align-issue.patch @@ -1,4 +1,4 @@ -From 78e497fb69950665e639cfab8f4fb50cc404a1eb Mon Sep 17 00:00:00 2001 +From b62c1da8f8e641397add10367ee9c4cfdedb1cc0 Mon Sep 17 00:00:00 2001 From: Haiqing Bai <Haiqing.Bai@windriver.com> Date: Mon, 9 Jan 2017 15:26:29 +0800 Subject: [PATCH] kexec: ARM: Fix add_buffer_phys_virt() align issue @@ -12,15 +12,16 @@ Upstream-Status: Pending Suggested-By:fredrik.markstrom@gmail.com Signed-off-by: Haiqing Bai <Haiqing.Bai@windriver.com> + --- kexec/arch/arm/crashdump-arm.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/kexec/arch/arm/crashdump-arm.c b/kexec/arch/arm/crashdump-arm.c -index 245c21a..12139c3 100644 +index 1ec1826..cc20f63 100644 --- a/kexec/arch/arm/crashdump-arm.c +++ b/kexec/arch/arm/crashdump-arm.c -@@ -240,6 +240,7 @@ int load_crashdump_segments(struct kexec_info *info, char *mod_cmdline) +@@ -242,6 +242,7 @@ int load_crashdump_segments(struct kexec_info *info, char *mod_cmdline) void *buf; int err; int last_ranges; @@ -28,7 +29,7 @@ index 245c21a..12139c3 100644 /* * First fetch all the memory (RAM) ranges that we are going to pass to -@@ -281,6 +282,7 @@ int load_crashdump_segments(struct kexec_info *info, char *mod_cmdline) +@@ -283,6 +284,7 @@ int load_crashdump_segments(struct kexec_info *info, char *mod_cmdline) /* for support LPAE enabled kernel*/ elf_info.class = ELFCLASS64; @@ -36,7 +37,7 @@ index 245c21a..12139c3 100644 err = crash_create_elf64_headers(info, &elf_info, usablemem_rgns.ranges, -@@ -302,8 +304,9 @@ int load_crashdump_segments(struct kexec_info *info, char *mod_cmdline) +@@ -304,8 +306,9 @@ int load_crashdump_segments(struct kexec_info *info, char *mod_cmdline) * 1MB) so that available memory passed in kernel command line will be * aligned to 1MB. This is because kernel create_mapping() wants memory * regions to be aligned to SECTION_SIZE. @@ -47,6 +48,3 @@ index 245c21a..12139c3 100644 crash_kernel_mem.start, crash_kernel_mem.end, -1, 0); --- -1.9.1 - diff --git a/meta/recipes-kernel/kexec/kexec-tools/0001-Disable-PIE-during-link.patch b/meta/recipes-kernel/kexec/kexec-tools/0005-Disable-PIE-during-link.patch index 3f2f85e337..6a21744ac1 100644 --- a/meta/recipes-kernel/kexec/kexec-tools/0001-Disable-PIE-during-link.patch +++ b/meta/recipes-kernel/kexec/kexec-tools/0005-Disable-PIE-during-link.patch @@ -1,4 +1,4 @@ -From ea7be6d71b85880e8e8a2c8a4f49a696c5f31ae4 Mon Sep 17 00:00:00 2001 +From 494888bcc3bbf070dfce1b2686ee34c8619aa33d Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> Date: Sat, 10 Jun 2017 11:18:49 -0700 Subject: [PATCH] Disable PIE during link @@ -9,15 +9,16 @@ just need to match it with linker flags Upstream-Status: Pending Signed-off-by: Khem Raj <raj.khem@gmail.com> + --- purgatory/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/purgatory/Makefile b/purgatory/Makefile -index 564bdb7..a08e41f 100644 +index 6673423..a7405ea 100644 --- a/purgatory/Makefile +++ b/purgatory/Makefile -@@ -59,7 +59,7 @@ $(PURGATORY): CPPFLAGS=$($(ARCH)_PURGATORY_EXTRA_CFLAGS) \ +@@ -60,7 +60,7 @@ $(PURGATORY): CPPFLAGS=$($(ARCH)_PURGATORY_EXTRA_CFLAGS) \ -Iinclude \ -I$(shell $(CC) -print-file-name=include) $(PURGATORY): LDFLAGS=$($(ARCH)_PURGATORY_EXTRA_CFLAGS)\ @@ -26,6 +27,3 @@ index 564bdb7..a08e41f 100644 -nodefaultlibs -e purgatory_start -Wl,-r \ -Wl,-Map=$(PURGATORY_MAP) --- -2.13.1 - diff --git a/meta/recipes-kernel/kexec/kexec-tools/Fix-building-on-x86_64-with-binutils-2.41.patch b/meta/recipes-kernel/kexec/kexec-tools/Fix-building-on-x86_64-with-binutils-2.41.patch new file mode 100644 index 0000000000..4894f044fc --- /dev/null +++ b/meta/recipes-kernel/kexec/kexec-tools/Fix-building-on-x86_64-with-binutils-2.41.patch @@ -0,0 +1,95 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Michel Lind <salimma@fedoraproject.org> +Date: Tue, 30 Jan 2024 04:14:31 -0600 +Subject: [PATCH] Fix building on x86_64 with binutils 2.41 + +Newer versions of the GNU assembler (observed with binutils 2.41) will +complain about the ".arch i386" in files assembled with "as --64", +with the message "Error: 64bit mode not supported on 'i386'". + +Fix by moving ".arch i386" below the relevant ".code32" directive, so +that the assembler is no longer expecting 64-bit instructions to be used +by the time that the ".arch i386" directive is encountered. + +Based on similar iPXE fix: +https://github.com/ipxe/ipxe/commit/6ca597eee + +Signed-off-by: Michel Lind <michel@michel-slm.name> +Signed-off-by: Simon Horman <horms@kernel.org> + +Upstream-Status: Backport [https://git.kernel.org/pub/scm/utils/kernel/kexec/kexec-tools.git/commit/?h=main&id=328de8e00e298f00d7ba6b25dc3950147e9642e6] +Signed-off-by: Yoann Congal <yoann.congal@smile.fr> +--- + purgatory/arch/i386/entry32-16-debug.S | 2 +- + purgatory/arch/i386/entry32-16.S | 2 +- + purgatory/arch/i386/entry32.S | 2 +- + purgatory/arch/i386/setup-x86.S | 2 +- + 4 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/purgatory/arch/i386/entry32-16-debug.S b/purgatory/arch/i386/entry32-16-debug.S +index 5167944..12e1164 100644 +--- a/purgatory/arch/i386/entry32-16-debug.S ++++ b/purgatory/arch/i386/entry32-16-debug.S +@@ -25,10 +25,10 @@ + .globl entry16_debug_pre32 + .globl entry16_debug_first32 + .globl entry16_debug_old_first32 +- .arch i386 + .balign 16 + entry16_debug: + .code32 ++ .arch i386 + /* Compute where I am running at (assumes esp valid) */ + call 1f + 1: popl %ebx +diff --git a/purgatory/arch/i386/entry32-16.S b/purgatory/arch/i386/entry32-16.S +index c051aab..eace095 100644 +--- a/purgatory/arch/i386/entry32-16.S ++++ b/purgatory/arch/i386/entry32-16.S +@@ -20,10 +20,10 @@ + #undef i386 + .text + .globl entry16, entry16_regs +- .arch i386 + .balign 16 + entry16: + .code32 ++ .arch i386 + /* Compute where I am running at (assumes esp valid) */ + call 1f + 1: popl %ebx +diff --git a/purgatory/arch/i386/entry32.S b/purgatory/arch/i386/entry32.S +index f7a494f..8ce9e31 100644 +--- a/purgatory/arch/i386/entry32.S ++++ b/purgatory/arch/i386/entry32.S +@@ -20,10 +20,10 @@ + #undef i386 + + .text +- .arch i386 + .globl entry32, entry32_regs + entry32: + .code32 ++ .arch i386 + + /* Setup a gdt that should that is generally usefully */ + lgdt %cs:gdt +diff --git a/purgatory/arch/i386/setup-x86.S b/purgatory/arch/i386/setup-x86.S +index 201bb2c..a212eed 100644 +--- a/purgatory/arch/i386/setup-x86.S ++++ b/purgatory/arch/i386/setup-x86.S +@@ -21,10 +21,10 @@ + #undef i386 + + .text +- .arch i386 + .globl purgatory_start + purgatory_start: + .code32 ++ .arch i386 + + /* Load a gdt so I know what the segment registers are */ + lgdt %cs:gdt +-- +2.39.2 + diff --git a/meta/recipes-kernel/kexec/kexec-tools/kexec-x32.patch b/meta/recipes-kernel/kexec/kexec-tools/kexec-x32.patch deleted file mode 100644 index 26d18eb6fe..0000000000 --- a/meta/recipes-kernel/kexec/kexec-tools/kexec-x32.patch +++ /dev/null @@ -1,88 +0,0 @@ -x86_64: Add support to build kexec-tools with x32 ABI - -Summary of changes, - -configure.ac: Add test for detect x32 ABI. -purgatory/arch/x86_64/Makefile: Not use mcmodel large when - x32 ABI is set. -kexec/arch/x86_64/kexec-elf-rel-x86_64.c: When x32 ABI is set - use ELFCLASS32 instead of ELFCLASS64. -kexec/kexec-syscall.h: Add correct syscall number for x32 ABI. - -Upstream-Status: Submitted - -Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com> -Signed-off-by: Mariano Lopez <mariano.lopez@linux.intel.com> - ---- - configure.ac | 9 +++++++++ - kexec/arch/x86_64/kexec-elf-rel-x86_64.c | 4 ++++ - kexec/kexec-syscall.h | 4 ++++ - purgatory/arch/x86_64/Makefile | 4 +++- - 4 files changed, 20 insertions(+), 1 deletion(-) - -Index: kexec-tools-2.0.10/configure.ac -=================================================================== ---- kexec-tools-2.0.10.orig/configure.ac -+++ kexec-tools-2.0.10/configure.ac -@@ -56,6 +56,15 @@ case $target_cpu in - ;; - ia64|x86_64|alpha|m68k ) - ARCH="$target_cpu" -+ -+ dnl ---Test for x32 ABI in x86_64 -+ if test "x$ARCH" = "xx86_64" ; then -+ AC_EGREP_CPP(x32_test, -+ [#if defined(__x86_64__) && defined (__ILP32__) -+ x32_test -+ #endif -+ ], SUBARCH='x32', SUBARCH='64') -+ fi - ;; - * ) - AC_MSG_ERROR([unsupported architecture $target_cpu]) -Index: kexec-tools-2.0.10/kexec/arch/x86_64/kexec-elf-rel-x86_64.c -=================================================================== ---- kexec-tools-2.0.10.orig/kexec/arch/x86_64/kexec-elf-rel-x86_64.c -+++ kexec-tools-2.0.10/kexec/arch/x86_64/kexec-elf-rel-x86_64.c -@@ -8,7 +8,11 @@ int machine_verify_elf_rel(struct mem_eh - if (ehdr->ei_data != ELFDATA2LSB) { - return 0; - } -+#ifdef __ILP32__ -+ if (ehdr->ei_class != ELFCLASS32) { -+#else - if (ehdr->ei_class != ELFCLASS64) { -+#endif - return 0; - } - if (ehdr->e_machine != EM_X86_64) { -Index: kexec-tools-2.0.10/kexec/kexec-syscall.h -=================================================================== ---- kexec-tools-2.0.10.orig/kexec/kexec-syscall.h -+++ kexec-tools-2.0.10/kexec/kexec-syscall.h -@@ -31,8 +31,12 @@ - #define __NR_kexec_load 268 - #endif - #ifdef __x86_64__ -+#ifdef __ILP32__ -+#define __NR_kexec_load 528 -+#else - #define __NR_kexec_load 246 - #endif -+#endif - #ifdef __s390x__ - #define __NR_kexec_load 277 - #endif -Index: kexec-tools-2.0.10/purgatory/arch/x86_64/Makefile -=================================================================== ---- kexec-tools-2.0.10.orig/purgatory/arch/x86_64/Makefile -+++ kexec-tools-2.0.10/purgatory/arch/x86_64/Makefile -@@ -23,4 +23,6 @@ x86_64_PURGATORY_SRCS += purgatory/arch/ - x86_64_PURGATORY_SRCS += purgatory/arch/i386/vga.c - x86_64_PURGATORY_SRCS += purgatory/arch/i386/pic.c - --x86_64_PURGATORY_EXTRA_CFLAGS = -mcmodel=large -+ifeq ($(SUBARCH),64) -+ x86_64_PURGATORY_EXTRA_CFLAGS = -mcmodel=large -+endif diff --git a/meta/recipes-kernel/kexec/kexec-tools_2.0.19.bb b/meta/recipes-kernel/kexec/kexec-tools_2.0.28.bb index f65cd9f106..dec821ea88 100644 --- a/meta/recipes-kernel/kexec/kexec-tools_2.0.19.bb +++ b/meta/recipes-kernel/kexec/kexec-tools_2.0.28.bb @@ -1,10 +1,9 @@ SUMMARY = "Kexec fast reboot tools" DESCRIPTION = "Kexec is a fast reboot feature that lets you reboot to a new Linux kernel" -AUTHOR = "Eric Biederman" HOMEPAGE = "http://kernel.org/pub/linux/utils/kernel/kexec/" SECTION = "kernel/userland" -LICENSE = "GPLv2" +LICENSE = "GPL-2.0-only" LIC_FILES_CHKSUM = "file://COPYING;md5=ea5bed2f60d357618ca161ad539f7c0a \ file://kexec/kexec.c;beginline=1;endline=20;md5=af10f6ae4a8715965e648aa687ad3e09" DEPENDS = "zlib xz" @@ -13,22 +12,22 @@ SRC_URI = "${KERNELORG_MIRROR}/linux/utils/kernel/kexec/kexec-tools-${PV}.tar.gz file://kdump \ file://kdump.conf \ file://kdump.service \ - file://0002-powerpc-change-the-memory-size-limit.patch \ - file://0001-purgatory-Pass-r-directly-to-linker.patch \ - file://0010-kexec-ARM-Fix-add_buffer_phys_virt-align-issue.patch \ - file://kexec-x32.patch \ - file://0001-Disable-PIE-during-link.patch \ + file://0001-powerpc-change-the-memory-size-limit.patch \ + file://0002-purgatory-Pass-r-directly-to-linker.patch \ + file://0003-kexec-ARM-Fix-add_buffer_phys_virt-align-issue.patch \ + file://0005-Disable-PIE-during-link.patch \ + file://0001-arm64-kexec-disabled-check-if-kaslr-seed-dtb-propert.patch \ + file://Fix-building-on-x86_64-with-binutils-2.41.patch \ " -SRC_URI[md5sum] = "052458f0a35c2a3b0d2302caa3318e9f" -SRC_URI[sha256sum] = "913c8dee918e5855a4ba60d609371390978144b4c8d15d6446ca0057b7bc5e58" +SRC_URI[sha256sum] = "f33d2660b3e38d25a127e87097978e0f7a9a73ab5151a29eb80974d169ff6a29" inherit autotools update-rc.d systemd export LDFLAGS = "-L${STAGING_LIBDIR}" EXTRA_OECONF = " --with-zlib=yes" -do_compile_prepend() { +do_compile:prepend() { # Remove the prepackaged config.h from the source tree as it overrides # the same file generated by configure and placed in the build tree rm -f ${S}/include/config.h @@ -43,7 +42,7 @@ do_compile_prepend() { done } -do_install_append () { +do_install:append () { install -d ${D}${sysconfdir}/sysconfig install -m 0644 ${WORKDIR}/kdump.conf ${D}${sysconfdir}/sysconfig @@ -53,35 +52,35 @@ do_install_append () { if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then install -D -m 0755 ${WORKDIR}/kdump ${D}${libexecdir}/kdump-helper - install -D -m 0644 ${WORKDIR}/kdump.service ${D}${systemd_unitdir}/system/kdump.service - sed -i -e 's,@LIBEXECDIR@,${libexecdir},g' ${D}${systemd_unitdir}/system/kdump.service + install -D -m 0644 ${WORKDIR}/kdump.service ${D}${systemd_system_unitdir}/kdump.service + sed -i -e 's,@LIBEXECDIR@,${libexecdir},g' ${D}${systemd_system_unitdir}/kdump.service fi } PACKAGES =+ "kexec kdump vmcore-dmesg" -ALLOW_EMPTY_${PN} = "1" -RRECOMMENDS_${PN} = "kexec kdump vmcore-dmesg" +ALLOW_EMPTY:${PN} = "1" +RRECOMMENDS:${PN} = "kexec kdump vmcore-dmesg" -FILES_kexec = "${sbindir}/kexec" -FILES_kdump = "${sbindir}/kdump \ +FILES:kexec = "${sbindir}/kexec" +FILES:kdump = "${sbindir}/kdump \ ${sysconfdir}/sysconfig/kdump.conf \ ${sysconfdir}/init.d/kdump \ ${libexecdir}/kdump-helper \ - ${systemd_unitdir}/system/kdump.service \ + ${systemd_system_unitdir}/kdump.service \ " -FILES_vmcore-dmesg = "${sbindir}/vmcore-dmesg" +FILES:vmcore-dmesg = "${sbindir}/vmcore-dmesg" INITSCRIPT_PACKAGES = "kdump" -INITSCRIPT_NAME_kdump = "kdump" -INITSCRIPT_PARAMS_kdump = "start 56 2 3 4 5 . stop 56 0 1 6 ." +INITSCRIPT_NAME:kdump = "kdump" +INITSCRIPT_PARAMS:kdump = "start 56 2 3 4 5 . stop 56 0 1 6 ." SYSTEMD_PACKAGES = "kdump" -SYSTEMD_SERVICE_kdump = "kdump.service" +SYSTEMD_SERVICE:kdump = "kdump.service" -SECURITY_PIE_CFLAGS_remove = "-fPIE -pie" +SECURITY_PIE_CFLAGS:remove = "-fPIE -pie" COMPATIBLE_HOST = '(x86_64.*|i.86.*|arm.*|aarch64.*|powerpc.*|mips.*)-(linux|freebsd.*)' -INSANE_SKIP_${PN} = "arch" +INSANE_SKIP:${PN} = "arch" diff --git a/meta/recipes-kernel/kmod/depmodwrapper-cross_1.0.bb b/meta/recipes-kernel/kmod/depmodwrapper-cross_1.0.bb index 9a172675af..6c0739d64f 100644 --- a/meta/recipes-kernel/kmod/depmodwrapper-cross_1.0.bb +++ b/meta/recipes-kernel/kmod/depmodwrapper-cross_1.0.bb @@ -21,20 +21,29 @@ do_install() { #!/bin/sh # Expected to be called as: depmodwrapper -a KERNEL_VERSION if [ "\$1" != "-a" -o "\$2" != "-b" ]; then - echo "Usage: depmodwrapper -a -b rootfs KERNEL_VERSION" >&2 + echo "Usage: depmodwrapper -a -b rootfs KERNEL_VERSION [KERNEL_PACKAGE_NAME]" >&2 exit 1 fi +kernelpkgname="kernel" +# If no KERNEL_PACKAGE_NAME, assume "kernel". +[ -z "\$5" ] || kernelpkgname="\$5" + kernelabi="" -if [ -r "${PKGDATA_DIR}/kernel-depmod/kernel-abiversion" ]; then - kernelabi=\$(cat "${PKGDATA_DIR}/kernel-depmod/kernel-abiversion") +if [ -r "${PKGDATA_DIR}/\${kernelpkgname}-depmod/\${kernelpkgname}-abiversion" ]; then + kernelabi=\$(cat "${PKGDATA_DIR}/\${kernelpkgname}-depmod/\${kernelpkgname}-abiversion") +fi + +if [ ! -e "\$3${nonarch_base_libdir}/depmod.d/exclude.conf" ]; then + mkdir -p "\$3${nonarch_base_libdir}/depmod.d" + echo "exclude .debug" > "\$3${nonarch_base_libdir}/depmod.d/exclude.conf" fi -if [ ! -r ${PKGDATA_DIR}/kernel-depmod/System.map-\$4 ] || [ "\$kernelabi" != "\$4" ]; then - echo "Unable to read: ${PKGDATA_DIR}/kernel-depmod/System.map-\$4" >&2 - exec env depmod "\$1" "\$2" "\$3" "\$4" +if [ ! -r ${PKGDATA_DIR}/\${kernelpkgname}-depmod/System.map-\$4 ] || [ "\$kernelabi" != "\$4" ]; then + echo "Unable to read: ${PKGDATA_DIR}/\${kernelpkgname}-depmod/System.map-\$4" >&2 + exec env depmod -C "\$3${nonarch_base_libdir}/depmod.d" "\$1" "\$2" "\$3" "\$4" else - exec env depmod "\$1" "\$2" "\$3" -F "${PKGDATA_DIR}/kernel-depmod/System.map-\$4" "\$4" + exec env depmod -C "\$3${nonarch_base_libdir}/depmod.d" "\$1" "\$2" "\$3" -F "${PKGDATA_DIR}/\${kernelpkgname}-depmod/System.map-\$4" "\$4" fi EOF chmod +x ${D}${bindir_crossscripts}/depmodwrapper diff --git a/meta/recipes-kernel/kmod/kmod-native_git.bb b/meta/recipes-kernel/kmod/kmod-native_git.bb deleted file mode 100644 index f61134bbaf..0000000000 --- a/meta/recipes-kernel/kmod/kmod-native_git.bb +++ /dev/null @@ -1,15 +0,0 @@ -# Copyright (C) 2012 Khem Raj <raj.khem@gmail.com> -# Released under the MIT license (see COPYING.MIT for the terms) - -require kmod.inc - -DEPENDS += "zlib-native" - -inherit native - -do_install_append (){ - for tool in depmod insmod lsmod modinfo modprobe rmmod - do - ln -s kmod ${D}${bindir}/$tool - done -} diff --git a/meta/recipes-kernel/kmod/kmod.inc b/meta/recipes-kernel/kmod/kmod.inc deleted file mode 100644 index e68860f6b4..0000000000 --- a/meta/recipes-kernel/kmod/kmod.inc +++ /dev/null @@ -1,41 +0,0 @@ -# Copyright (C) 2012 Khem Raj <raj.khem@gmail.com> -# Released under the MIT license (see COPYING.MIT for the terms) - -SUMMARY = "Tools for managing Linux kernel modules" -DESCRIPTION = "kmod is a set of tools to handle common tasks with Linux kernel modules like \ - insert, remove, list, check properties, resolve dependencies and aliases." -HOMEPAGE = "http://packages.profusion.mobi/kmod/" -LICENSE = "GPL-2.0+ & LGPL-2.1+" -LICENSE_libkmod = "LGPL-2.1+" -SECTION = "base" - -LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \ - file://libkmod/COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \ - " -inherit autotools gtk-doc pkgconfig manpages - -SRCREV = "58133a96c894c043e48c74ddf0bfe8db90bac62f" -# Lookout for PV bump too when SRCREV is changed -PV = "26" - -SRC_URI = "git://git.kernel.org/pub/scm/utils/kernel/kmod/kmod.git \ - file://depmod-search.conf \ - file://avoid_parallel_tests.patch \ - " - -S = "${WORKDIR}/git" - -EXTRA_AUTORECONF += "--install --symlink" -EXTRA_OECONF +=" --enable-tools --with-zlib" - -CACHED_CONFIGUREVARS += "ac_cv_path_DOLT_BASH='/usr/bin/env bash'" - -PACKAGECONFIG[debug] = "--enable-debug,--disable-debug" -PACKAGECONFIG[logging] = " --enable-logging,--disable-logging" -PACKAGECONFIG[manpages] = "--enable-manpages, --disable-manpages, libxslt-native xmlto-native" - -GTKDOC_DOCDIR = "${S}/libkmod/docs" - -do_configure_append () { - sed -i 's#}libtool#}${TARGET_SYS}-libtool#' ${B}/doltlibtool -} diff --git a/meta/recipes-kernel/kmod/kmod/0001-Use-portable-implementation-for-basename-API.patch b/meta/recipes-kernel/kmod/kmod/0001-Use-portable-implementation-for-basename-API.patch new file mode 100644 index 0000000000..6a7f9ded4f --- /dev/null +++ b/meta/recipes-kernel/kmod/kmod/0001-Use-portable-implementation-for-basename-API.patch @@ -0,0 +1,136 @@ +From 721ed6040c7aa47070faf6378c433089e178bd43 Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Sat, 9 Dec 2023 17:35:59 -0800 +Subject: [PATCH] Use portable implementation for basename API + +musl has removed the non-prototype declaration of basename from +string.h [1] which now results in build errors with clang-17+ compiler + +Implement GNU basename behavior using strchr which is portable across libcs + +Fixes +../git/tools/kmod.c:71:19: error: call to undeclared function 'basename'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] +71 | "Commands:\n", basename(argv[0])); +| ^ + +[1] https://git.musl-libc.org/cgit/musl/commit/?id=725e17ed6dff4d0cd22487bb64470881e86a92e7 + +Upstream-Status: Submitted [https://github.com/kmod-project/kmod/pull/32] + +Suggested-by: Rich Felker + +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + libkmod/libkmod-config.c | 2 +- + shared/util.c | 4 ++-- + shared/util.h | 7 +++++++ + testsuite/testsuite.c | 2 +- + tools/depmod.c | 2 +- + tools/kmod.c | 4 ++-- + 6 files changed, 14 insertions(+), 7 deletions(-) + +diff --git a/libkmod/libkmod-config.c b/libkmod/libkmod-config.c +index e83621b..8aa555a 100644 +--- a/libkmod/libkmod-config.c ++++ b/libkmod/libkmod-config.c +@@ -794,7 +794,7 @@ static int conf_files_insert_sorted(struct kmod_ctx *ctx, + bool is_single = false; + + if (name == NULL) { +- name = basename(path); ++ name = gnu_basename(path); + is_single = true; + } + +diff --git a/shared/util.c b/shared/util.c +index e2bab83..0e16670 100644 +--- a/shared/util.c ++++ b/shared/util.c +@@ -172,9 +172,9 @@ char *modname_normalize(const char *modname, char buf[static PATH_MAX], size_t * + + char *path_to_modname(const char *path, char buf[static PATH_MAX], size_t *len) + { +- char *modname; ++ const char *modname; + +- modname = basename(path); ++ modname = gnu_basename(path); + if (modname == NULL || modname[0] == '\0') + return NULL; + +diff --git a/shared/util.h b/shared/util.h +index c4a3916..073dc5a 100644 +--- a/shared/util.h ++++ b/shared/util.h +@@ -5,6 +5,7 @@ + #include <stdbool.h> + #include <stdlib.h> + #include <stdio.h> ++#include <string.h> + #include <sys/types.h> + #include <sys/stat.h> + #include <time.h> +@@ -76,6 +77,12 @@ do { \ + __p->__v = (val); \ + } while(0) + ++static _always_inline_ const char *gnu_basename(const char *s) ++{ ++ const char *p = strrchr(s, '/'); ++ return p ? p+1 : s; ++} ++ + static _always_inline_ unsigned int ALIGN_POWER2(unsigned int u) + { + return 1 << ((sizeof(u) * 8) - __builtin_clz(u - 1)); +diff --git a/testsuite/testsuite.c b/testsuite/testsuite.c +index 318343a..aafc987 100644 +--- a/testsuite/testsuite.c ++++ b/testsuite/testsuite.c +@@ -70,7 +70,7 @@ static void help(void) + + printf("Usage:\n" + "\t%s [options] <test>\n" +- "Options:\n", basename(progname)); ++ "Options:\n", gnu_basename(progname)); + + for (itr = options, itr_short = options_short; + itr->name != NULL; itr++, itr_short++) +diff --git a/tools/depmod.c b/tools/depmod.c +index 43fc354..cfb15b1 100644 +--- a/tools/depmod.c ++++ b/tools/depmod.c +@@ -762,7 +762,7 @@ static int cfg_files_insert_sorted(struct cfg_file ***p_files, size_t *p_n_files + if (name != NULL) + namelen = strlen(name); + else { +- name = basename(dir); ++ name = gnu_basename(dir); + namelen = strlen(name); + dirlen -= namelen + 1; + } +diff --git a/tools/kmod.c b/tools/kmod.c +index 55689c0..df91e5c 100644 +--- a/tools/kmod.c ++++ b/tools/kmod.c +@@ -68,7 +68,7 @@ static int kmod_help(int argc, char *argv[]) + "Options:\n" + "\t-V, --version show version\n" + "\t-h, --help show this help\n\n" +- "Commands:\n", basename(argv[0])); ++ "Commands:\n", gnu_basename(argv[0])); + + for (i = 0; i < ARRAY_SIZE(kmod_cmds); i++) { + if (kmod_cmds[i]->help != NULL) { +@@ -156,7 +156,7 @@ static int handle_kmod_compat_commands(int argc, char *argv[]) + const char *cmd; + size_t i; + +- cmd = basename(argv[0]); ++ cmd = gnu_basename(argv[0]); + + for (i = 0; i < ARRAY_SIZE(kmod_compat_cmds); i++) { + if (streq(kmod_compat_cmds[i]->name, cmd)) +-- +2.43.0 + diff --git a/meta/recipes-kernel/kmod/kmod/avoid_parallel_tests.patch b/meta/recipes-kernel/kmod/kmod/avoid_parallel_tests.patch index 990c338fa9..04a8204815 100644 --- a/meta/recipes-kernel/kmod/kmod/avoid_parallel_tests.patch +++ b/meta/recipes-kernel/kmod/kmod/avoid_parallel_tests.patch @@ -20,7 +20,7 @@ diff --git a/configure.ac b/configure.ac index ee72283..60980c0 100644 --- a/configure.ac +++ b/configure.ac -@@ -14,7 +14,7 @@ AC_USE_SYSTEM_EXTENSIONS +@@ -14,8 +14,8 @@ AC_USE_SYSTEM_EXTENSIONS AC_SYS_LARGEFILE AC_PREFIX_DEFAULT([/usr]) AM_MAINTAINER_MODE([enable]) @@ -28,4 +28,5 @@ index ee72283..60980c0 100644 +AM_INIT_AUTOMAKE([check-news foreign 1.11 silent-rules tar-pax no-dist-gzip dist-xz subdir-objects color-tests serial-tests]) AM_SILENT_RULES([yes]) LT_INIT([disable-static pic-only]) - DOLT + + AS_IF([test "x$enable_static" = "xyes"], [AC_MSG_ERROR([--enable-static is not supported by kmod])]) diff --git a/meta/recipes-kernel/kmod/kmod/gtkdocdir.patch b/meta/recipes-kernel/kmod/kmod/gtkdocdir.patch new file mode 100644 index 0000000000..a34ea466e8 --- /dev/null +++ b/meta/recipes-kernel/kmod/kmod/gtkdocdir.patch @@ -0,0 +1,33 @@ +From dd59095f70f774f6d1e767010e25b35ef6db4c4b Mon Sep 17 00:00:00 2001 +From: Ross Burton <ross.burton@arm.com> +Date: Fri, 8 Dec 2023 22:35:45 +0000 +Subject: [PATCH] configure: set docdir in GTK_DOC_CHECK + +By passing --docdir in the GTK_DOC_CHECK arguments (to match +autogen.sh) autoreconf will work out of the box. + +Without this autoreconf fails due to the documentation not being in +./docs, the default location. + +Upstream-Status: Submitted [https://lore.kernel.org/linux-modules/20231208224511.1363066-1-ross.burton@arm.com/T/#u] +Signed-off-by: Ross Burton <ross.burton@arm.com> +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index de01e08..67696c4 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -255,7 +255,7 @@ AS_IF([test "x$enable_coverage" = "xyes"], [ + AM_CONDITIONAL([ENABLE_COVERAGE], [test "x$enable_coverage" = "xyes"]) + + m4_ifdef([GTK_DOC_CHECK], [ +-GTK_DOC_CHECK([1.14],[--flavour no-tmpl-flat]) ++GTK_DOC_CHECK([1.14],[--flavour no-tmpl-flat --docdir libkmod/docs]) + ], [ + AM_CONDITIONAL([ENABLE_GTK_DOC], false)]) + +-- +2.34.1 + diff --git a/meta/recipes-kernel/kmod/kmod/ptest.patch b/meta/recipes-kernel/kmod/kmod/ptest.patch deleted file mode 100644 index 831dbcb909..0000000000 --- a/meta/recipes-kernel/kmod/kmod/ptest.patch +++ /dev/null @@ -1,25 +0,0 @@ -Add 'install-ptest' rule. - -Signed-off-by: Tudor Florea <tudor.florea@enea.com> -Upstream-Status: Pending - -diff -ruN a/Makefile.am b/Makefile.am ---- a/Makefile.am 2013-07-12 17:11:05.278331557 +0200 -+++ b/Makefile.am 2013-07-12 17:14:27.033788016 +0200 -@@ -204,6 +204,16 @@ - - distclean-local: $(DISTCLEAN_LOCAL_HOOKS) - -+install-ptest: -+ @$(MKDIR_P) $(DESTDIR)/testsuite -+ @for file in $(TESTSUITE); do \ -+ install $$file $(DESTDIR)/testsuite; \ -+ done; -+ @sed -e 's/^Makefile/_Makefile/' < Makefile > $(DESTDIR)/Makefile -+ @$(MKDIR_P) $(DESTDIR)/tools -+ @cp $(noinst_SCRIPTS) $(noinst_PROGRAMS) $(DESTDIR)/tools -+ @cp -r testsuite/rootfs testsuite/.libs $(DESTDIR)/testsuite -+ - # ------------------------------------------------------------------------------ - # custom release helpers - # ------------------------------------------------------------------------------ diff --git a/meta/recipes-kernel/kmod/kmod_31.bb b/meta/recipes-kernel/kmod/kmod_31.bb new file mode 100644 index 0000000000..6ae83a7c66 --- /dev/null +++ b/meta/recipes-kernel/kmod/kmod_31.bb @@ -0,0 +1,89 @@ +# Copyright (C) 2012 Khem Raj <raj.khem@gmail.com> +# Released under the MIT license (see COPYING.MIT for the terms) + +SUMMARY = "Tools for managing Linux kernel modules" +DESCRIPTION = "kmod is a set of tools to handle common tasks with Linux kernel modules like \ + insert, remove, list, check properties, resolve dependencies and aliases." +HOMEPAGE = "http://kernel.org/pub/linux/utils/kernel/kmod/" +LICENSE = "GPL-2.0-or-later & LGPL-2.1-or-later" +LICENSE:libkmod = "LGPL-2.1-or-later" +SECTION = "base" + +LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \ + file://libkmod/COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \ + file://tools/COPYING;md5=751419260aa954499f7abaabaa882bbe \ + " +inherit autotools bash-completion gtk-doc pkgconfig manpages update-alternatives + +SRCREV = "aff617ea871d0568cc491bd116c0be1e857463bb" + +SRC_URI = "git://git.kernel.org/pub/scm/utils/kernel/kmod/kmod.git;branch=master;protocol=https \ + file://depmod-search.conf \ + file://avoid_parallel_tests.patch \ + file://0001-Use-portable-implementation-for-basename-API.patch \ + file://gtkdocdir.patch \ + " + +S = "${WORKDIR}/git" + +EXTRA_OECONF += "--enable-tools" + +PACKAGECONFIG ??= "zlib xz openssl" +PACKAGECONFIG[debug] = "--enable-debug,--disable-debug" +PACKAGECONFIG[logging] = " --enable-logging,--disable-logging" +PACKAGECONFIG[manpages] = "--enable-manpages, --disable-manpages, libxslt-native xmlto-native" +PACKAGECONFIG[openssl] = "--with-openssl,--without-openssl,openssl" +PACKAGECONFIG[xz] = "--with-xz,--without-xz,xz" +PACKAGECONFIG[zlib] = "--with-zlib,--without-zlib,zlib" +PACKAGECONFIG[zstd] = "--with-zstd,--without-zstd,zstd" + +PROVIDES += "module-init-tools-insmod-static module-init-tools-depmod module-init-tools" +RPROVIDES:${PN} += "module-init-tools-insmod-static module-init-tools-depmod module-init-tools" +RCONFLICTS:${PN} += "module-init-tools-insmod-static module-init-tools-depmod module-init-tools" +RREPLACES:${PN} += "module-init-tools-insmod-static module-init-tools-depmod module-init-tools" + +# to force user to remove old module-init-tools and replace them with kmod variants +RCONFLICTS:libkmod2 += "module-init-tools-insmod-static module-init-tools-depmod module-init-tools" + +# autotools set prefix to /usr, however we want them in /bin and /sbin +EXTRA_OECONF += "--bindir=${base_bindir} --sbindir=${base_sbindir}" + +do_install:append () { + install -dm755 ${D}${base_bindir} + install -dm755 ${D}${base_sbindir} + # add symlinks to kmod + ln -rs ${D}${base_bindir}/kmod ${D}${base_bindir}/lsmod + for tool in insmod rmmod depmod modinfo modprobe; do + ln -rs ${D}${base_bindir}/kmod ${D}${base_sbindir}/${tool} + done + # configuration directories + install -dm755 ${D}${nonarch_base_libdir}/depmod.d + install -dm755 ${D}${nonarch_base_libdir}/modprobe.d + install -dm755 ${D}${sysconfdir}/depmod.d + install -dm755 ${D}${sysconfdir}/modprobe.d + + # install depmod.d file for search/ dir + install -Dm644 "${WORKDIR}/depmod-search.conf" "${D}${nonarch_base_libdir}/depmod.d/search.conf" + + # Add .debug to the exclude path for depmod + echo "exclude .debug" > ${D}${nonarch_base_libdir}/depmod.d/exclude.conf +} + +ALTERNATIVE_PRIORITY = "70" + +ALTERNATIVE:kmod = "insmod modprobe rmmod modinfo bin-lsmod lsmod depmod" + +ALTERNATIVE_LINK_NAME[depmod] = "${base_sbindir}/depmod" +ALTERNATIVE_LINK_NAME[insmod] = "${base_sbindir}/insmod" +ALTERNATIVE_LINK_NAME[modprobe] = "${base_sbindir}/modprobe" +ALTERNATIVE_LINK_NAME[rmmod] = "${base_sbindir}/rmmod" +ALTERNATIVE_LINK_NAME[modinfo] = "${base_sbindir}/modinfo" +ALTERNATIVE_LINK_NAME[bin-lsmod] = "${base_bindir}/lsmod" +ALTERNATIVE_LINK_NAME[lsmod] = "${base_sbindir}/lsmod" +ALTERNATIVE_TARGET[lsmod] = "${base_bindir}/lsmod.${BPN}" + +PACKAGES =+ "libkmod" +FILES:libkmod = "${base_libdir}/libkmod*${SOLIBS} ${libdir}/libkmod*${SOLIBS}" +FILES:${PN} += "${nonarch_base_libdir}/depmod.d ${nonarch_base_libdir}/modprobe.d" + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-kernel/kmod/kmod_git.bb b/meta/recipes-kernel/kmod/kmod_git.bb deleted file mode 100644 index bd21d2ff73..0000000000 --- a/meta/recipes-kernel/kmod/kmod_git.bb +++ /dev/null @@ -1,60 +0,0 @@ -# Copyright (C) 2012 Khem Raj <raj.khem@gmail.com> -# Released under the MIT license (see COPYING.MIT for the terms) - -require kmod.inc - -DEPENDS += "zlib" -PROVIDES += "module-init-tools-insmod-static module-init-tools-depmod module-init-tools" -RPROVIDES_${PN} += "module-init-tools-insmod-static module-init-tools-depmod module-init-tools" -RCONFLICTS_${PN} += "module-init-tools-insmod-static module-init-tools-depmod module-init-tools" -RREPLACES_${PN} += "module-init-tools-insmod-static module-init-tools-depmod module-init-tools" - -# to force user to remove old module-init-tools and replace them with kmod variants -RCONFLICTS_libkmod2 += "module-init-tools-insmod-static module-init-tools-depmod module-init-tools" - -# autotools set prefix to /usr, however we want them in /bin and /sbin -EXTRA_OECONF += " --bindir=${base_bindir} --sbindir=${base_sbindir}" - -do_install_append () { - install -dm755 ${D}${base_bindir} - install -dm755 ${D}${base_sbindir} - # add symlinks to kmod - lnr ${D}${base_bindir}/kmod ${D}${base_bindir}/lsmod - for tool in insmod rmmod depmod modinfo modprobe; do - lnr ${D}${base_bindir}/kmod ${D}${base_sbindir}/${tool} - done - # configuration directories - install -dm755 ${D}${base_libdir}/depmod.d - install -dm755 ${D}${base_libdir}/modprobe.d - install -dm755 ${D}${sysconfdir}/depmod.d - install -dm755 ${D}${sysconfdir}/modprobe.d - - # install depmod.d file for search/ dir - install -Dm644 "${WORKDIR}/depmod-search.conf" "${D}${base_libdir}/depmod.d/search.conf" -} - -do_compile_prepend() { - sed -i 's/ac_pwd=/#ac_pwd=/' config.status ; sed -i "/#ac_pwd=/a\ac_pwd='.'" config.status -} - -inherit update-alternatives bash-completion - -ALTERNATIVE_PRIORITY = "70" - -ALTERNATIVE_kmod = "insmod modprobe rmmod modinfo bin-lsmod lsmod depmod" - -ALTERNATIVE_LINK_NAME[insmod] = "${base_sbindir}/insmod" -ALTERNATIVE_LINK_NAME[modprobe] = "${base_sbindir}/modprobe" -ALTERNATIVE_LINK_NAME[rmmod] = "${base_sbindir}/rmmod" -ALTERNATIVE_LINK_NAME[modinfo] = "${base_sbindir}/modinfo" -ALTERNATIVE_LINK_NAME[bin-lsmod] = "${base_bindir}/lsmod" - -ALTERNATIVE_LINK_NAME[lsmod] = "${base_sbindir}/lsmod" -ALTERNATIVE_TARGET[lsmod] = "${base_bindir}/lsmod.${BPN}" - -ALTERNATIVE_LINK_NAME[depmod] = "${base_sbindir}/depmod" - -PACKAGES =+ "libkmod" - -FILES_libkmod = "${base_libdir}/libkmod*${SOLIBS} ${libdir}/libkmod*${SOLIBS}" -FILES_${PN} += "${base_libdir}/depmod.d ${base_libdir}/modprobe.d" diff --git a/meta/recipes-kernel/libtraceevent/libtraceevent/meson.patch b/meta/recipes-kernel/libtraceevent/libtraceevent/meson.patch new file mode 100644 index 0000000000..c723c236c0 --- /dev/null +++ b/meta/recipes-kernel/libtraceevent/libtraceevent/meson.patch @@ -0,0 +1,45 @@ +From 7f88c9ba5f27276e844252500a9f0ba2b350b919 Mon Sep 17 00:00:00 2001 +From: Ross Burton <ross.burton@arm.com> +Date: Sun, 27 Aug 2023 20:57:44 +0100 +Subject: [PATCH] Fixes for the Meson build of libtraceevent: + +- Make the plugin directory the same as the Makefiles +- Install the plugins as modules not static and versioned shared libraries + +Upstream-Status: Submitted [https://lore.kernel.org/linux-trace-devel/20240311111140.1789879-1-alex@linutronix.de/T/#u] +Signed-off-by: Ross Burton <ross.burton@arm.com> +--- + meson.build | 2 +- + plugins/meson.build | 3 +-- + 2 files changed, 2 insertions(+), 3 deletions(-) + +diff --git a/meson.build b/meson.build +index 40ce38c..1eb7912 100644 +--- a/meson.build ++++ b/meson.build +@@ -25,7 +25,7 @@ htmldir = join_paths(prefixdir, get_option('htmldir')) + libdir = join_paths(prefixdir, get_option('libdir')) + plugindir = get_option('plugindir') + if plugindir == '' +- plugindir = join_paths(libdir, 'libtraceevent/plugins') ++ plugindir = join_paths(libdir, 'traceevent/plugins') + endif + + add_project_arguments( +diff --git a/plugins/meson.build b/plugins/meson.build +index 74ad664..4919be4 100644 +--- a/plugins/meson.build ++++ b/plugins/meson.build +@@ -19,11 +19,10 @@ plugins = [ + + pdeps = [] + foreach plugin : plugins +- pdeps += library( ++ pdeps += shared_module( + plugin.replace('.c', ''), + plugin, + name_prefix: '', +- version: library_version, + dependencies: [libtraceevent_dep], + include_directories: [incdir], + install: true, diff --git a/meta/recipes-kernel/libtraceevent/libtraceevent_1.8.2.bb b/meta/recipes-kernel/libtraceevent/libtraceevent_1.8.2.bb new file mode 100644 index 0000000000..d4ace54884 --- /dev/null +++ b/meta/recipes-kernel/libtraceevent/libtraceevent_1.8.2.bb @@ -0,0 +1,23 @@ +# Copyright (C) 2022 Khem Raj <raj.khem@gmail.com> +# Released under the MIT license (see COPYING.MIT for the terms) + +SUMMARY = "API to access the kernel tracefs directory" +HOMEPAGE = "https://git.kernel.org/pub/scm/libs/libtrace/libtracefs.git/" +LICENSE = "GPL-2.0-or-later & LGPL-2.1-or-later" +LIC_FILES_CHKSUM = "file://LICENSES/GPL-2.0;md5=e6a75371ba4d16749254a51215d13f97 \ + file://LICENSES/LGPL-2.1;md5=b370887980db5dd40659b50909238dbd" +SECTION = "libs" + +SRCREV = "6f6d5802f31992e7527a4c32b43a32fda6bf6bdf" +SRC_URI = "git://git.kernel.org/pub/scm/libs/libtrace/libtraceevent.git;branch=${BPN};protocol=https \ + file://meson.patch" + +S = "${WORKDIR}/git" + +inherit meson pkgconfig + +EXTRA_OEMESON = "-Ddoc=false" + +PACKAGES += "${PN}-plugins" + +FILES:${PN}-plugins += "${libdir}/traceevent/plugins" diff --git a/meta/recipes-kernel/linux-firmware/linux-firmware_20240312.bb b/meta/recipes-kernel/linux-firmware/linux-firmware_20240312.bb new file mode 100644 index 0000000000..ff79bb9b33 --- /dev/null +++ b/meta/recipes-kernel/linux-firmware/linux-firmware_20240312.bb @@ -0,0 +1,1583 @@ +SUMMARY = "Firmware files for use with Linux kernel" +HOMEPAGE = "https://www.kernel.org/" +DESCRIPTION = "Linux firmware is a package distributed alongside the Linux kernel \ +that contains firmware binary blobs necessary for partial or full functionality \ +of certain hardware devices." +SECTION = "kernel" + +LICENSE = "\ + Firmware-Abilis \ + & Firmware-adsp_sst \ + & Firmware-agere \ + & Firmware-amdgpu \ + & Firmware-amd-ucode \ + & Firmware-amlogic_vdec \ + & Firmware-amphion_vpu \ + & Firmware-atheros_firmware \ + & Firmware-atmel \ + & Firmware-broadcom_bcm43xx \ + & Firmware-ca0132 \ + & Firmware-cavium \ + & Firmware-chelsio_firmware \ + & Firmware-cirrus \ + & Firmware-cnm \ + & Firmware-cw1200 \ + & Firmware-cypress \ + & Firmware-dib0700 \ + & Firmware-e100 \ + & Firmware-ene_firmware \ + & Firmware-fw_sst_0f28 \ + & Firmware-go7007 \ + & Firmware-hfi1_firmware \ + & Firmware-i915 \ + & Firmware-ibt_firmware \ + & Firmware-ice \ + & Firmware-ice_enhanced \ + & Firmware-it913x \ + & Firmware-iwlwifi_firmware \ + & Firmware-IntcSST2 \ + & Firmware-kaweth \ + & Firmware-linaro \ + & Firmware-Lontium \ + & Firmware-Marvell \ + & Firmware-mediatek \ + & Firmware-microchip \ + & Firmware-moxa \ + & Firmware-myri10ge_firmware \ + & Firmware-netronome \ + & Firmware-nvidia \ + & Firmware-nxp \ + & Firmware-nxp_mc_firmware \ + & Firmware-OLPC \ + & Firmware-ath9k-htc \ + & Firmware-phanfw \ + & Firmware-powervr \ + & Firmware-qat \ + & Firmware-qcom \ + & Firmware-qcom-yamato \ + & Firmware-qla1280 \ + & Firmware-qla2xxx \ + & Firmware-qualcommAthos_ar3k \ + & Firmware-qualcommAthos_ath10k \ + & Firmware-r8a779x_usb3 \ + & Firmware-radeon \ + & Firmware-ralink_a_mediatek_company_firmware \ + & Firmware-ralink-firmware \ + & Firmware-rockchip \ + & Firmware-rtlwifi_firmware \ + & Firmware-imx-sdma_firmware \ + & Firmware-siano \ + & Firmware-ti-connectivity \ + & Firmware-ti-keystone \ + & Firmware-ueagle-atm4-firmware \ + & Firmware-via_vt6656 \ + & Firmware-wl1251 \ + & Firmware-xc4000 \ + & Firmware-xc5000 \ + & Firmware-xc5000c \ + & WHENCE \ + & GPL-2.0-or-later \ +" + +LIC_FILES_CHKSUM = "file://LICENCE.Abilis;md5=b5ee3f410780e56711ad48eadc22b8bc \ + file://LICENCE.adsp_sst;md5=615c45b91a5a4a9fe046d6ab9a2df728 \ + file://LICENCE.agere;md5=af0133de6b4a9b2522defd5f188afd31 \ + file://LICENSE.amdgpu;md5=a2589a05ea5b6bd2b7f4f623c7e7a649 \ + file://LICENSE.amd-ucode;md5=6ca90c57f7b248de1e25c7f68ffc4698 \ + file://LICENSE.amlogic_vdec;md5=dc44f59bf64a81643e500ad3f39a468a \ + file://LICENSE.amphion_vpu;md5=2bcdc00527b2d0542bd92b52aaec2b60 \ + file://LICENCE.atheros_firmware;md5=30a14c7823beedac9fa39c64fdd01a13 \ + file://LICENSE.atmel;md5=aa74ac0c60595dee4d4e239107ea77a3 \ + file://LICENCE.broadcom_bcm43xx;md5=3160c14df7228891b868060e1951dfbc \ + file://LICENCE.ca0132;md5=209b33e66ee5be0461f13d31da392198 \ + file://LICENCE.cadence;md5=009f46816f6956cfb75ede13d3e1cee0 \ + file://LICENCE.cavium;md5=c37aaffb1ebe5939b2580d073a95daea \ + file://LICENCE.chelsio_firmware;md5=819aa8c3fa453f1b258ed8d168a9d903 \ + file://LICENSE.cirrus;md5=662ea2c1a8888f7d79ed7f27c27472e1 \ + file://LICENCE.cnm;md5=93b67e6bac7f8fec22b96b8ad0a1a9d0 \ + file://LICENCE.cw1200;md5=f0f770864e7a8444a5c5aa9d12a3a7ed \ + file://LICENCE.cypress;md5=48cd9436c763bf873961f9ed7b5c147b \ + file://LICENSE.dib0700;md5=f7411825c8a555a1a3e5eab9ca773431 \ + file://LICENCE.e100;md5=ec0f84136766df159a3ae6d02acdf5a8 \ + file://LICENCE.ene_firmware;md5=ed67f0f62f8f798130c296720b7d3921 \ + file://LICENCE.fw_sst_0f28;md5=6353931c988ad52818ae733ac61cd293 \ + file://LICENCE.go7007;md5=c0bb9f6aaaba55b0529ee9b30aa66beb \ + file://LICENSE.hfi1_firmware;md5=5e7b6e586ce7339d12689e49931ad444 \ + file://LICENSE.i915;md5=2b0b2e0d20984affd4490ba2cba02570 \ + file://LICENCE.ibt_firmware;md5=fdbee1ddfe0fb7ab0b2fcd6b454a366b \ + file://LICENSE.ice;md5=742ab4850f2670792940e6d15c974b2f \ + file://LICENSE.ice_enhanced;md5=f305cfc31b64f95f774f9edd9df0224d \ + file://LICENCE.IntcSST2;md5=9e7d8bea77612d7cc7d9e9b54b623062 \ + file://LICENCE.it913x;md5=1fbf727bfb6a949810c4dbfa7e6ce4f8 \ + file://LICENCE.iwlwifi_firmware;md5=2ce6786e0fc11ac6e36b54bb9b799f1b \ + file://LICENCE.kaweth;md5=b1d876e562f4b3b8d391ad8395dfe03f \ + file://LICENCE.linaro;md5=936d91e71cf9cd30e733db4bf11661cc \ + file://LICENSE.Lontium;md5=4ec8dc582ff7295f39e2ca6a7b0be2b6 \ + file://LICENCE.Marvell;md5=28b6ed8bd04ba105af6e4dcd6e997772 \ + file://LICENCE.mediatek;md5=7c1976b63217d76ce47d0a11d8a79cf2 \ + file://LICENCE.microchip;md5=db753b00305675dfbf120e3f24a47277 \ + file://LICENCE.moxa;md5=1086614767d8ccf744a923289d3d4261 \ + file://LICENCE.myri10ge_firmware;md5=42e32fb89f6b959ca222e25ac8df8fed \ + file://LICENCE.Netronome;md5=4add08f2577086d44447996503cddf5f \ + file://LICENCE.nvidia;md5=4428a922ed3ba2ceec95f076a488ce07 \ + file://LICENCE.NXP;md5=58bb8ba632cd729b9ba6183bc6aed36f \ + file://LICENSE.nxp;md5=cca321ca1524d6a1e4fed87486cd82dc \ + file://LICENSE.nxp_mc_firmware;md5=9dc97e4b279b3858cae8879ae2fe5dd7 \ + file://LICENCE.OLPC;md5=5b917f9d8c061991be4f6f5f108719cd \ + file://LICENCE.open-ath9k-htc-firmware;md5=1b33c9f4d17bc4d457bdb23727046837 \ + file://LICENCE.phanfw;md5=954dcec0e051f9409812b561ea743bfa \ + file://LICENSE.powervr;md5=83045ed2a2cda15b4eaff682c98c9533 \ + file://LICENCE.qat_firmware;md5=72de83dfd9b87be7685ed099a39fbea4 \ + file://LICENSE.qcom;md5=164e3362a538eb11d3ac51e8e134294b \ + file://LICENSE.qcom_yamato;md5=d0de0eeccaf1843a850bf7a6777eec5c \ + file://LICENCE.qla1280;md5=d6895732e622d950609093223a2c4f5d \ + file://LICENCE.qla2xxx;md5=505855e921b75f1be4a437ad9b79dff0 \ + file://LICENSE.QualcommAtheros_ar3k;md5=b5fe244fb2b532311de1472a3bc06da5 \ + file://LICENSE.QualcommAtheros_ath10k;md5=cb42b686ee5f5cb890275e4321db60a8 \ + file://LICENCE.r8a779x_usb3;md5=4c1671656153025d7076105a5da7e498 \ + file://LICENSE.radeon;md5=68ec28bacb3613200bca44f404c69b16 \ + file://LICENCE.ralink_a_mediatek_company_firmware;md5=728f1a85fd53fd67fa8d7afb080bc435 \ + file://LICENCE.ralink-firmware.txt;md5=ab2c269277c45476fb449673911a2dfd \ + file://LICENCE.rockchip;md5=5fd70190c5ed39734baceada8ecced26 \ + file://LICENCE.rtlwifi_firmware.txt;md5=00d06cfd3eddd5a2698948ead2ad54a5 \ + file://LICENSE.sdma_firmware;md5=51e8c19ecc2270f4b8ea30341ad63ce9 \ + file://LICENCE.siano;md5=4556c1bf830067f12ca151ad953ec2a5 \ + file://LICENCE.ti-connectivity;md5=c5e02be633f1499c109d1652514d85ec \ + file://LICENCE.ti-keystone;md5=3a86335d32864b0bef996bee26cc0f2c \ + file://LICENCE.ueagle-atm4-firmware;md5=4ed7ea6b507ccc583b9d594417714118 \ + file://LICENCE.via_vt6656;md5=e4159694cba42d4377a912e78a6e850f \ + file://LICENCE.wl1251;md5=ad3f81922bb9e197014bb187289d3b5b \ + file://LICENCE.xc4000;md5=0ff51d2dc49fce04814c9155081092f0 \ + file://LICENCE.xc5000;md5=1e170c13175323c32c7f4d0998d53f66 \ + file://LICENCE.xc5000c;md5=12b02efa3049db65d524aeb418dd87ca \ + file://WHENCE;md5=${WHENCE_CHKSUM} \ + " +# WHENCE checksum is defined separately to ease overriding it if +# class-devupstream is selected. +WHENCE_CHKSUM = "514da1cd8b363373030f0c16749feb8d" + +# These are not common licenses, set NO_GENERIC_LICENSE for them +# so that the license files will be copied from fetched source +NO_GENERIC_LICENSE[Firmware-Abilis] = "LICENCE.Abilis" +NO_GENERIC_LICENSE[Firmware-adsp_sst] = "LICENCE.adsp_sst" +NO_GENERIC_LICENSE[Firmware-agere] = "LICENCE.agere" +NO_GENERIC_LICENSE[Firmware-amdgpu] = "LICENSE.amdgpu" +NO_GENERIC_LICENSE[Firmware-amd-ucode] = "LICENSE.amd-ucode" +NO_GENERIC_LICENSE[Firmware-amlogic_vdec] = "LICENSE.amlogic_vdec" +NO_GENERIC_LICENSE[Firmware-amphion_vpu] = "LICENSE.amphion_vpu" +NO_GENERIC_LICENSE[Firmware-atheros_firmware] = "LICENCE.atheros_firmware" +NO_GENERIC_LICENSE[Firmware-atmel] = "LICENSE.atmel" +NO_GENERIC_LICENSE[Firmware-broadcom_bcm43xx] = "LICENCE.broadcom_bcm43xx" +NO_GENERIC_LICENSE[Firmware-ca0132] = "LICENCE.ca0132" +NO_GENERIC_LICENSE[Firmware-cadence] = "LICENCE.cadence" +NO_GENERIC_LICENSE[Firmware-cavium] = "LICENCE.cavium" +NO_GENERIC_LICENSE[Firmware-chelsio_firmware] = "LICENCE.chelsio_firmware" +NO_GENERIC_LICENSE[Firmware-cirrus] = "LICENSE.cirrus" +NO_GENERIC_LICENSE[Firmware-cnm] = "LICENCE.cnm" +NO_GENERIC_LICENSE[Firmware-cw1200] = "LICENCE.cw1200" +NO_GENERIC_LICENSE[Firmware-cypress] = "LICENCE.cypress" +NO_GENERIC_LICENSE[Firmware-dib0700] = "LICENSE.dib0700" +NO_GENERIC_LICENSE[Firmware-e100] = "LICENCE.e100" +NO_GENERIC_LICENSE[Firmware-ene_firmware] = "LICENCE.ene_firmware" +NO_GENERIC_LICENSE[Firmware-fw_sst_0f28] = "LICENCE.fw_sst_0f28" +NO_GENERIC_LICENSE[Firmware-go7007] = "LICENCE.go7007" +NO_GENERIC_LICENSE[Firmware-hfi1_firmware] = "LICENSE.hfi1_firmware" +NO_GENERIC_LICENSE[Firmware-i915] = "LICENSE.i915" +NO_GENERIC_LICENSE[Firmware-ibt_firmware] = "LICENCE.ibt_firmware" +NO_GENERIC_LICENSE[Firmware-ice] = "LICENSE.ice" +NO_GENERIC_LICENSE[Firmware-ice_enhanced] = "LICENSE.ice_enhanced" +NO_GENERIC_LICENSE[Firmware-IntcSST2] = "LICENCE.IntcSST2" +NO_GENERIC_LICENSE[Firmware-it913x] = "LICENCE.it913x" +NO_GENERIC_LICENSE[Firmware-iwlwifi_firmware] = "LICENCE.iwlwifi_firmware" +NO_GENERIC_LICENSE[Firmware-kaweth] = "LICENCE.kaweth" +NO_GENERIC_LICENSE[Firmware-linaro] = "LICENCE.linaro" +NO_GENERIC_LICENSE[Firmware-Lontium] = "LICENSE.Lontium" +NO_GENERIC_LICENSE[Firmware-Marvell] = "LICENCE.Marvell" +NO_GENERIC_LICENSE[Firmware-mediatek] = "LICENCE.mediatek" +NO_GENERIC_LICENSE[Firmware-microchip] = "LICENCE.microchip" +NO_GENERIC_LICENSE[Firmware-moxa] = "LICENCE.moxa" +NO_GENERIC_LICENSE[Firmware-myri10ge_firmware] = "LICENCE.myri10ge_firmware" +NO_GENERIC_LICENSE[Firmware-netronome] = "LICENCE.Netronome" +NO_GENERIC_LICENSE[Firmware-nvidia] = "LICENCE.nvidia" +NO_GENERIC_LICENSE[Firmware-nxp] = "LICENSE.nxp" +NO_GENERIC_LICENSE[Firmware-nxp_mc_firmware] = "LICENSE.nxp_mc_firmware" +NO_GENERIC_LICENSE[Firmware-OLPC] = "LICENCE.OLPC" +NO_GENERIC_LICENSE[Firmware-ath9k-htc] = "LICENCE.open-ath9k-htc-firmware" +NO_GENERIC_LICENSE[Firmware-phanfw] = "LICENCE.phanfw" +NO_GENERIC_LICENSE[Firmware-powervr] = "LICENSE.powervr" +NO_GENERIC_LICENSE[Firmware-qat] = "LICENCE.qat_firmware" +NO_GENERIC_LICENSE[Firmware-qcom] = "LICENSE.qcom" +NO_GENERIC_LICENSE[Firmware-qcom-yamato] = "LICENSE.qcom_yamato" +NO_GENERIC_LICENSE[Firmware-qla1280] = "LICENCE.qla1280" +NO_GENERIC_LICENSE[Firmware-qla2xxx] = "LICENCE.qla2xxx" +NO_GENERIC_LICENSE[Firmware-qualcommAthos_ar3k] = "LICENSE.QualcommAtheros_ar3k" +NO_GENERIC_LICENSE[Firmware-qualcommAthos_ath10k] = "LICENSE.QualcommAtheros_ath10k" +NO_GENERIC_LICENSE[Firmware-r8a779x_usb3] = "LICENCE.r8a779x_usb3" +NO_GENERIC_LICENSE[Firmware-radeon] = "LICENSE.radeon" +NO_GENERIC_LICENSE[Firmware-ralink_a_mediatek_company_firmware] = "LICENCE.ralink_a_mediatek_company_firmware" +NO_GENERIC_LICENSE[Firmware-ralink-firmware] = "LICENCE.ralink-firmware.txt" +NO_GENERIC_LICENSE[Firmware-rockchip] = "LICENCE.rockchip" +NO_GENERIC_LICENSE[Firmware-rtlwifi_firmware] = "LICENCE.rtlwifi_firmware.txt" +NO_GENERIC_LICENSE[Firmware-siano] = "LICENCE.siano" +NO_GENERIC_LICENSE[Firmware-imx-sdma_firmware] = "LICENSE.sdma_firmware" +NO_GENERIC_LICENSE[Firmware-ti-connectivity] = "LICENCE.ti-connectivity" +NO_GENERIC_LICENSE[Firmware-ti-keystone] = "LICENCE.ti-keystone" +NO_GENERIC_LICENSE[Firmware-ueagle-atm4-firmware] = "LICENCE.ueagle-atm4-firmware" +NO_GENERIC_LICENSE[Firmware-via_vt6656] = "LICENCE.via_vt6656" +NO_GENERIC_LICENSE[Firmware-wl1251] = "LICENCE.wl1251" +NO_GENERIC_LICENSE[Firmware-xc4000] = "LICENCE.xc4000" +NO_GENERIC_LICENSE[Firmware-xc5000] = "LICENCE.xc5000" +NO_GENERIC_LICENSE[Firmware-xc5000c] = "LICENCE.xc5000c" +NO_GENERIC_LICENSE[WHENCE] = "WHENCE" + +PE = "1" + +SRC_URI = "\ + ${KERNELORG_MIRROR}/linux/kernel/firmware/${BPN}-${PV}.tar.xz \ +" + +BBCLASSEXTEND = "devupstream:target" +SRC_URI:class-devupstream = "git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git;protocol=https;branch=main" +# Pin this to the 20220509 release, override this in local.conf +SRCREV:class-devupstream ?= "b19cbdca78ab2adfd210c91be15a22568e8b8cae" + +SRC_URI[sha256sum] = "b2327a54ad1897c828008caf63af5ee15469ba723a5016be58f2b44f07bd4b94" + +inherit allarch + +CLEANBROKEN = "1" + +# Use PACKAGECONFIG_CONFARGS to set the Makefile target +PACKAGECONFIG ??= "" +# Enabling dedup will turn duplicate firmware files into links +PACKAGECONFIG[deduplicate] = "install,install-nodedup,rdfind-native" + +do_compile() { + : +} + +do_install() { + oe_runmake 'DESTDIR=${D}' 'FIRMWAREDIR=${nonarch_base_libdir}/firmware' ${PACKAGECONFIG_CONFARGS} + cp LICEN[CS]E.* WHENCE ${D}${nonarch_base_libdir}/firmware/ +} + + +PACKAGES =+ "${PN}-amphion-vpu-license ${PN}-amphion-vpu \ + ${PN}-cw1200-license ${PN}-cw1200 \ + ${PN}-ralink-license ${PN}-ralink \ + ${PN}-mt76x-license ${PN}-mt7601u ${PN}-mt7650 ${PN}-mt76x2 \ + ${PN}-radeon-license ${PN}-radeon \ + ${PN}-amdgpu-license ${PN}-amdgpu \ + ${PN}-marvell-license ${PN}-pcie8897 ${PN}-pcie8997 \ + ${PN}-mediatek-license ${PN}-mediatek \ + ${PN}-microchip-license ${PN}-microchip \ + ${PN}-moxa-license ${PN}-moxa \ + ${PN}-sd8686 ${PN}-sd8688 ${PN}-sd8787 ${PN}-sd8797 ${PN}-sd8801 \ + ${PN}-sd8887 ${PN}-sd8897 ${PN}-sd8997 ${PN}-usb8997 \ + ${PN}-ti-connectivity-license ${PN}-wlcommon ${PN}-wl12xx ${PN}-wl18xx \ + ${PN}-ti-keystone-license ${PN}-ti-keystone \ + ${PN}-vt6656-license ${PN}-vt6656 \ + ${PN}-rs9113 ${PN}-rs9116 \ + ${PN}-rtl-license ${PN}-rtl8188 ${PN}-rtl8192cu ${PN}-rtl8192ce ${PN}-rtl8192su ${PN}-rtl8723 ${PN}-rtl8821 \ + ${PN}-rtl8761 \ + ${PN}-rtl8168 \ + ${PN}-rtl8822 \ + ${PN}-rtl-nic \ + ${PN}-cypress-license \ + ${PN}-broadcom-license \ + ${PN}-bcm-0bb4-0306 \ + ${PN}-bcm43143 \ + ${PN}-bcm43236b \ + ${PN}-bcm43241b0 \ + ${PN}-bcm43241b4 \ + ${PN}-bcm43241b5 \ + ${PN}-bcm43242a \ + ${PN}-bcm4329 \ + ${PN}-bcm4329-fullmac \ + ${PN}-bcm4330 \ + ${PN}-bcm4334 \ + ${PN}-bcm43340 \ + ${PN}-bcm4335 \ + ${PN}-bcm43362 \ + ${PN}-bcm4339 \ + ${PN}-bcm43430 \ + ${PN}-bcm43430a0 \ + ${PN}-bcm43455 \ + ${PN}-bcm4350 \ + ${PN}-bcm4350c2 \ + ${PN}-bcm4354 \ + ${PN}-bcm4356 \ + ${PN}-bcm4356-pcie \ + ${PN}-bcm43569 \ + ${PN}-bcm43570 \ + ${PN}-bcm4358 \ + ${PN}-bcm43602 \ + ${PN}-bcm4366b \ + ${PN}-bcm4366c \ + ${PN}-bcm4371 \ + ${PN}-bcm4373 \ + ${PN}-bcm43xx \ + ${PN}-bcm43xx-hdr \ + ${PN}-cirrus-license ${PN}-cirrus \ + ${PN}-cnm-license ${PN}-cnm \ + ${PN}-atheros-license ${PN}-ar5523 ${PN}-ar9170 ${PN}-ath6k ${PN}-ath9k ${PN}-ath3k \ + ${PN}-carl9170 \ + ${PN}-ar3k-license ${PN}-ar3k ${PN}-ath10k-license ${PN}-ath10k ${PN}-ath11k ${PN}-qca \ + \ + ${PN}-imx-sdma-license ${PN}-imx-sdma-imx6q ${PN}-imx-sdma-imx7d \ + \ + ${PN}-iwlwifi-license ${PN}-iwlwifi \ + ${PN}-iwlwifi-135-6 \ + ${PN}-iwlwifi-3160-7 ${PN}-iwlwifi-3160-8 ${PN}-iwlwifi-3160-9 \ + ${PN}-iwlwifi-3160-10 ${PN}-iwlwifi-3160-12 ${PN}-iwlwifi-3160-13 \ + ${PN}-iwlwifi-3160-16 ${PN}-iwlwifi-3160-17 \ + ${PN}-iwlwifi-6000-4 ${PN}-iwlwifi-6000g2a-5 ${PN}-iwlwifi-6000g2a-6 \ + ${PN}-iwlwifi-6000g2b-5 ${PN}-iwlwifi-6000g2b-6 \ + ${PN}-iwlwifi-6050-4 ${PN}-iwlwifi-6050-5 \ + ${PN}-iwlwifi-7260 \ + ${PN}-iwlwifi-7265 \ + ${PN}-iwlwifi-7265d ${PN}-iwlwifi-8000c ${PN}-iwlwifi-8265 \ + ${PN}-iwlwifi-9000 \ + ${PN}-iwlwifi-9260 \ + ${PN}-iwlwifi-misc \ + ${PN}-ibt-license ${PN}-ibt \ + ${PN}-ibt-11-5 ${PN}-ibt-12-16 ${PN}-ibt-hw-37-7 ${PN}-ibt-hw-37-8 \ + ${PN}-ibt-17 \ + ${PN}-ibt-20 \ + ${PN}-ibt-misc \ + ${PN}-i915-license ${PN}-i915 \ + ${PN}-ice-license ${PN}-ice \ + ${PN}-ice-enhanced-license ${PN}-ice-enhanced \ + ${PN}-adsp-sst-license ${PN}-adsp-sst \ + ${PN}-bnx2 \ + ${PN}-bnx2x \ + ${PN}-liquidio \ + ${PN}-mellanox \ + ${PN}-nvidia-license \ + ${PN}-nvidia-tegra-k1 ${PN}-nvidia-tegra \ + ${PN}-nvidia-gpu \ + ${PN}-nxp-license \ + ${PN}-nxp8987-sdio \ + ${PN}-nxp8997-common \ + ${PN}-nxp8997-pcie \ + ${PN}-nxp8997-sdio \ + ${PN}-nxp9098-common \ + ${PN}-nxp9098-pcie \ + ${PN}-nxp9098-sdio \ + ${PN}-nxpiw416-sdio \ + ${PN}-nxpiw612-sdio \ + ${PN}-nxp-mc-license ${PN}-nxp-mc \ + ${PN}-netronome-license ${PN}-netronome \ + ${PN}-olpc-license ${PN}-olpc \ + ${PN}-phanfw-license ${PN}-phanfw \ + ${PN}-powervr-license ${PN}-powervr \ + ${PN}-prestera \ + ${PN}-qat ${PN}-qat-license \ + ${PN}-qed \ + ${PN}-qcom-license ${PN}-qcom-yamato-license \ + ${PN}-qcom-venus-1.8 ${PN}-qcom-venus-4.2 ${PN}-qcom-venus-5.2 ${PN}-qcom-venus-5.4 ${PN}-qcom-venus-6.0 \ + ${PN}-qcom-vpu-1.0 ${PN}-qcom-vpu-2.0 \ + ${PN}-qcom-adreno-a2xx ${PN}-qcom-adreno-a3xx ${PN}-qcom-adreno-a4xx ${PN}-qcom-adreno-a530 \ + ${PN}-qcom-adreno-a630 ${PN}-qcom-adreno-a650 ${PN}-qcom-adreno-a660 ${PN}-qcom-adreno-a702 \ + ${PN}-qcom-apq8016-modem ${PN}-qcom-apq8016-wifi \ + ${PN}-qcom-apq8096-adreno ${PN}-qcom-apq8096-audio ${PN}-qcom-apq8096-modem \ + ${PN}-qcom-qcm2290-adreno ${PN}-qcom-qcm2290-audio ${PN}-qcom-qcm2290-modem ${PN}-qcom-qcm2290-wifi \ + ${PN}-qcom-qrb4210-adreno ${PN}-qcom-qrb4210-audio ${PN}-qcom-qrb4210-compute \ + ${PN}-qcom-qrb4210-modem ${PN}-qcom-qrb4210-wifi \ + ${PN}-qcom-sc8280xp-lenovo-x13s-compat \ + ${PN}-qcom-sc8280xp-lenovo-x13s-audio \ + ${PN}-qcom-sc8280xp-lenovo-x13s-adreno \ + ${PN}-qcom-sc8280xp-lenovo-x13s-compute \ + ${PN}-qcom-sc8280xp-lenovo-x13s-sensors \ + ${PN}-qcom-sdm845-adreno ${PN}-qcom-sdm845-audio ${PN}-qcom-sdm845-compute ${PN}-qcom-sdm845-modem \ + ${PN}-qcom-sdm845-thundercomm-db845c-sensors \ + ${PN}-qcom-sm8250-adreno ${PN}-qcom-sm8250-audio ${PN}-qcom-sm8250-compute \ + ${PN}-qcom-sm8250-thundercomm-rb5-sensors \ + ${PN}-qla2xxx ${PN}-qla2xxx-license \ + ${PN}-rockchip-license ${PN}-rockchip-dptx \ + ${PN}-amlogic-vdec-license ${PN}-amlogic-vdec \ + ${PN}-lt9611uxc ${PN}-lontium-license \ + ${PN}-whence-license \ + ${PN}-wl1251-license ${PN}-wl1251 \ + ${PN}-xc4000-license ${PN}-xc4000 \ + ${PN}-xc5000-license ${PN}-xc5000 \ + ${PN}-xc5000c-license ${PN}-xc5000c \ + ${PN}-license \ + " + +# For Amphion VPU +LICENSE:${PN}-amphion-vpu = "Firmware-amphion_vpu" +LICENSE:${PN}-amphion-vpu-license = "Firmware-amphion_vpu" + +FILES:${PN}-amphion-vpu = "${nonarch_base_libdir}/firmware/amphion/*" +FILES:${PN}-amphion-vpu-license = " \ + ${nonarch_base_libdir}/firmware/LICENSE.amphion_vpu \ +" +RDEPENDS:${PN}-amphion-vpu += "${PN}-amphion-vpu-license" + +# For cw1200 +LICENSE:${PN}-cw1200 = "Firmware-cw1200" +LICENSE:${PN}-cw1200-license = "Firmware-cw1200" + +FILES:${PN}-cw1200 = "${nonarch_base_libdir}/firmware/wsm_22.bin" +FILES:${PN}-cw1200-license = "${nonarch_base_libdir}/firmware/LICENCE.cw1200" + +RDEPENDS:${PN}-cw1200 += "${PN}-cw1200-license" + +# For atheros +LICENSE:${PN}-ar5523 = "Firmware-atheros_firmware" +LICENSE:${PN}-ar9170 = "Firmware-atheros_firmware" +LICENSE:${PN}-ath3k = "Firmware-atheros_firmware" +LICENSE:${PN}-ath6k = "Firmware-atheros_firmware" +LICENSE:${PN}-ath9k = "Firmware-atheros_firmware" +LICENSE:${PN}-atheros-license = "Firmware-atheros_firmware" + +FILES:${PN}-atheros-license = "${nonarch_base_libdir}/firmware/LICENCE.atheros_firmware" +FILES:${PN}-ar5523 = " \ + ${nonarch_base_libdir}/firmware/ar5523.bin \ +" +FILES:${PN}-ar9170 = " \ + ${nonarch_base_libdir}/firmware/ar9170*.fw \ +" +FILES:${PN}-ath3k = " \ + ${nonarch_base_libdir}/firmware/ath3k*fw \ +" +FILES:${PN}-ath6k = " \ + ${nonarch_base_libdir}/firmware/ath6k \ +" +FILES:${PN}-ath9k = " \ + ${nonarch_base_libdir}/firmware/ar9271.fw \ + ${nonarch_base_libdir}/firmware/ar7010*.fw \ + ${nonarch_base_libdir}/firmware/htc_9271.fw \ + ${nonarch_base_libdir}/firmware/htc_7010.fw \ + ${nonarch_base_libdir}/firmware/ath9k_htc/htc_7010-1.4.0.fw \ + ${nonarch_base_libdir}/firmware/ath9k_htc/htc_9271-1.4.0.fw \ +" + +RDEPENDS:${PN}-ar5523 += "${PN}-atheros-license" +RDEPENDS:${PN}-ar9170 += "${PN}-atheros-license" +RDEPENDS:${PN}-ath6k += "${PN}-atheros-license" +RDEPENDS:${PN}-ath9k += "${PN}-atheros-license" + +# For carl9170 + +FILES:${PN}-carl9170 = " \ + ${nonarch_base_libdir}/firmware/carl9170*.fw \ +" +LICENSE:${PN}-carl9170 = "GPL-2.0-or-later" + +# For QualCommAthos +LICENSE:${PN}-ar3k = "Firmware-qualcommAthos_ar3k & Firmware-atheros_firmware" +LICENSE:${PN}-ar3k-license = "Firmware-qualcommAthos_ar3k" +LICENSE:${PN}-ath10k = "Firmware-qualcommAthos_ath10k" +LICENSE:${PN}-ath10k-license = "Firmware-qualcommAthos_ath10k" +LICENSE:${PN}-qca = "Firmware-qualcommAthos_ath10k" + +FILES:${PN}-ar3k-license = "${nonarch_base_libdir}/firmware/LICENSE.QualcommAtheros_ar3k" +FILES:${PN}-ar3k = " \ + ${nonarch_base_libdir}/firmware/ar3k \ +" + +FILES:${PN}-ath10k-license = "${nonarch_base_libdir}/firmware/LICENSE.QualcommAtheros_ath10k" +FILES:${PN}-ath10k = " \ + ${nonarch_base_libdir}/firmware/ath10k \ +" + +FILES:${PN}-ath11k = " \ + ${nonarch_base_libdir}/firmware/ath11k \ +" + +FILES:${PN}-qca = " \ + ${nonarch_base_libdir}/firmware/qca \ +" + +RDEPENDS:${PN}-ar3k += "${PN}-ar3k-license ${PN}-atheros-license" +RDEPENDS:${PN}-ath10k += "${PN}-ath10k-license" +RDEPENDS:${PN}-ath11k += "${PN}-ath10k-license" +RDEPENDS:${PN}-qca += "${PN}-ath10k-license" + +# For ralink +LICENSE:${PN}-ralink = "Firmware-ralink-firmware" +LICENSE:${PN}-ralink-license = "Firmware-ralink-firmware" + +FILES:${PN}-ralink-license = "${nonarch_base_libdir}/firmware/LICENCE.ralink-firmware.txt" +FILES:${PN}-ralink = " \ + ${nonarch_base_libdir}/firmware/rt*.bin \ +" + +RDEPENDS:${PN}-ralink += "${PN}-ralink-license" + +# For mediatek MT7601U +LICENSE:${PN}-mt76x-license = "Firmware-ralink_a_mediatek_company_firmware" +FILES:${PN}-mt76x-license = "${nonarch_base_libdir}/firmware/LICENCE.ralink_a_mediatek_company_firmware" + +LICENSE:${PN}-mt7601u = "Firmware-ralink_a_mediatek_company_firmware" + +FILES:${PN}-mt7601u = " \ + ${nonarch_base_libdir}/firmware/mediatek/mt7601u.bin \ + ${nonarch_base_libdir}/firmware/mt7601u.bin \ +" +RDEPENDS:${PN}-mt7601u += "${PN}-mt76x-license" + +# For MediaTek Bluetooth USB driver 7650 +LICENSE:${PN}-mt7650 = "Firmware-ralink_a_mediatek_company_firmware" + +FILES:${PN}-mt7650 = " \ + ${nonarch_base_libdir}/firmware/mediatek/mt7650.bin \ + ${nonarch_base_libdir}/firmware/mt7650.bin \ +" +RDEPENDS:${PN}-mt7650 += "${PN}-mt76x-license" + +# For MediaTek MT76x2 Wireless MACs +LICENSE:${PN}-mt76x2 = "Firmware-ralink_a_mediatek_company_firmware" + +FILES:${PN}-mt76x2 = " \ + ${nonarch_base_libdir}/firmware/mediatek/mt7662.bin \ + ${nonarch_base_libdir}/firmware/mt7662.bin \ + ${nonarch_base_libdir}/firmware/mediatek/mt7662_rom_patch.bin \ + ${nonarch_base_libdir}/firmware/mt7662_rom_patch.bin \ +" +RDEPENDS:${PN}-mt76x2 += "${PN}-mt76x-license" + +# For MediaTek +LICENSE:${PN}-mediatek = "Firmware-mediatek" +LICENSE:${PN}-mediatek-license = "Firmware-mediatek" + +FILES:${PN}-mediatek = " \ + ${nonarch_base_libdir}/firmware/mediatek/* \ + ${nonarch_base_libdir}/firmware/vpu_d.bin \ + ${nonarch_base_libdir}/firmware/vpu_p.bin \ +" +FILES:${PN}-mediatek-license = " \ + ${nonarch_base_libdir}/firmware/LICENCE.mediatek \ +" +RDEPENDS:${PN}-mediatek += "${PN}-mediatek-license" + +# For Microchip +LICENSE:${PN}-microchip = "Firmware-microchip" +LICENSE:${PN}-microchip-license = "Firmware-microchip" + +FILES:${PN}-microchip = "${nonarch_base_libdir}/firmware/microchip/*" +FILES:${PN}-microchip-license = " \ + ${nonarch_base_libdir}/firmware/LICENCE.microchip \ +" +RDEPENDS:${PN}-microchip += "${PN}-microchip-license" + +# For MOXA +LICENSE:${PN}-moxa = "Firmware-moxa" +LICENSE:${PN}-moxa-license = "Firmware-moxa" + +FILES:${PN}-moxa = "${nonarch_base_libdir}/firmware/moxa" +FILES:${PN}-moxa-license = "${nonarch_base_libdir}/firmware/LICENCE.moxa" + +RDEPENDS:${PN}-moxa += "${PN}-moxa-license" + +# For radeon + +LICENSE:${PN}-radeon = "Firmware-radeon" +LICENSE:${PN}-radeon-license = "Firmware-radeon" + +FILES:${PN}-radeon-license = "${nonarch_base_libdir}/firmware/LICENSE.radeon" +FILES:${PN}-radeon = " \ + ${nonarch_base_libdir}/firmware/radeon \ +" + +RDEPENDS:${PN}-radeon += "${PN}-radeon-license" + +# For amdgpu +LICENSE:${PN}-amdgpu = "Firmware-amdgpu" +LICENSE:${PN}-amdgpu-license = "Firmware-amdgpu" + +FILES:${PN}-amdgpu-license = "${nonarch_base_libdir}/firmware/LICENSE.amdgpu" +FILES:${PN}-amdgpu = " \ + ${nonarch_base_libdir}/firmware/amdgpu \ +" + +RDEPENDS:${PN}-amdgpu += "${PN}-amdgpu-license" + +# For lontium +LICENSE:${PN}-lt9611uxc = "Firmware-Lontium" + +FILES:${PN}-lontium-license = "${nonarch_base_libdir}/firmware/LICENSE.Lontium" +FILES:${PN}-lt9611uxc = "${nonarch_base_libdir}/firmware/lt9611uxc_fw.bin" + +# For marvell +LICENSE:${PN}-pcie8897 = "Firmware-Marvell" +LICENSE:${PN}-pcie8997 = "Firmware-Marvell" +LICENSE:${PN}-sd8686 = "Firmware-Marvell" +LICENSE:${PN}-sd8688 = "Firmware-Marvell" +LICENSE:${PN}-sd8787 = "Firmware-Marvell" +LICENSE:${PN}-sd8797 = "Firmware-Marvell" +LICENSE:${PN}-sd8801 = "Firmware-Marvell" +LICENSE:${PN}-sd8887 = "Firmware-Marvell" +LICENSE:${PN}-sd8897 = "Firmware-Marvell" +LICENSE:${PN}-sd8997 = "Firmware-Marvell" +LICENSE:${PN}-usb8997 = "Firmware-Marvell" +LICENSE:${PN}-marvell-license = "Firmware-Marvell" + +FILES:${PN}-marvell-license = "${nonarch_base_libdir}/firmware/LICENCE.Marvell" +FILES:${PN}-pcie8897 = " \ + ${nonarch_base_libdir}/firmware/mrvl/pcie8897_uapsta.bin \ +" +FILES:${PN}-pcie8997 = " \ + ${nonarch_base_libdir}/firmware/mrvl/pcie8997_wlan_v4.bin \ + ${nonarch_base_libdir}/firmware/mrvl/pcieuart8997_combo_v4.bin \ + ${nonarch_base_libdir}/firmware/mrvl/pcieusb8997_combo_v4.bin \ +" +FILES:${PN}-sd8686 = " \ + ${nonarch_base_libdir}/firmware/libertas/sd8686_v9* \ + ${nonarch_base_libdir}/firmware/sd8686* \ +" +FILES:${PN}-sd8688 = " \ + ${nonarch_base_libdir}/firmware/libertas/sd8688* \ + ${nonarch_base_libdir}/firmware/mrvl/sd8688* \ +" +FILES:${PN}-sd8787 = " \ + ${nonarch_base_libdir}/firmware/mrvl/sd8787_uapsta.bin \ +" +FILES:${PN}-sd8797 = " \ + ${nonarch_base_libdir}/firmware/mrvl/sd8797_uapsta.bin \ +" +FILES:${PN}-sd8801 = " \ + ${nonarch_base_libdir}/firmware/mrvl/sd8801_uapsta.bin \ +" +FILES:${PN}-sd8887 = " \ + ${nonarch_base_libdir}/firmware/mrvl/sd8887_uapsta.bin \ +" +FILES:${PN}-sd8897 = " \ + ${nonarch_base_libdir}/firmware/mrvl/sd8897_uapsta.bin \ +" +do_install:append() { + # The kernel 5.6.x driver still uses the old name, provide a symlink for + # older kernels + ln -fs sdsd8997_combo_v4.bin ${D}${nonarch_base_libdir}/firmware/mrvl/sd8997_uapsta.bin +} +FILES:${PN}-sd8997 = " \ + ${nonarch_base_libdir}/firmware/mrvl/sd8997_uapsta.bin \ + ${nonarch_base_libdir}/firmware/mrvl/sdsd8997_combo_v4.bin \ +" +FILES:${PN}-usb8997 = " \ + ${nonarch_base_libdir}/firmware/mrvl/usbusb8997_combo_v4.bin \ +" + +RDEPENDS:${PN}-sd8686 += "${PN}-marvell-license" +RDEPENDS:${PN}-sd8688 += "${PN}-marvell-license" +RDEPENDS:${PN}-sd8787 += "${PN}-marvell-license" +RDEPENDS:${PN}-sd8797 += "${PN}-marvell-license" +RDEPENDS:${PN}-sd8801 += "${PN}-marvell-license" +RDEPENDS:${PN}-sd8887 += "${PN}-marvell-license" +RDEPENDS:${PN}-sd8897 += "${PN}-marvell-license" +RDEPENDS:${PN}-sd8997 += "${PN}-marvell-license" +RDEPENDS:${PN}-usb8997 += "${PN}-marvell-license" + +# For netronome +LICENSE:${PN}-netronome = "Firmware-netronome" + +FILES:${PN}-netronome-license = " \ + ${nonarch_base_libdir}/firmware/LICENCE.Netronome \ +" +FILES:${PN}-netronome = " \ + ${nonarch_base_libdir}/firmware/netronome/nic_AMDA0081*.nffw \ + ${nonarch_base_libdir}/firmware/netronome/nic_AMDA0096*.nffw \ + ${nonarch_base_libdir}/firmware/netronome/nic_AMDA0097*.nffw \ + ${nonarch_base_libdir}/firmware/netronome/nic_AMDA0099*.nffw \ + ${nonarch_base_libdir}/firmware/netronome/nic_AMDA0058-0011_2x40.nffw \ + ${nonarch_base_libdir}/firmware/netronome/nic_AMDA0058-0012_2x40.nffw \ + ${nonarch_base_libdir}/firmware/netronome/nic_AMDA0078-0011_1x100.nffw \ + ${nonarch_base_libdir}/firmware/netronome/bpf \ + ${nonarch_base_libdir}/firmware/netronome/flower \ + ${nonarch_base_libdir}/firmware/netronome/nic \ + ${nonarch_base_libdir}/firmware/netronome/nic-sriov \ +" + +RDEPENDS:${PN}-netronome += "${PN}-netronome-license" + +# For NXP +LICENSE:${PN}-nxp8987-sdio = "Firmware-nxp" +LICENSE:${PN}-nxp8997-common = "Firmware-nxp" +LICENSE:${PN}-nxp8997-pcie = "Firmware-nxp" +LICENSE:${PN}-nxp8997-sdio = "Firmware-nxp" +LICENSE:${PN}-nxp9098-common = "Firmware-nxp" +LICENSE:${PN}-nxp9098-pcie = "Firmware-nxp" +LICENSE:${PN}-nxp9098-sdio = "Firmware-nxp" +LICENSE:${PN}-nxpiw416-sdio = "Firmware-nxp" +LICENSE:${PN}-nxpiw612-sdio = "Firmware-nxp" +LICENSE:${PN}-nxp-license = "Firmware-nxp" + +FILES:${PN}-nxp8987-sdio = "${nonarch_base_libdir}/firmware/nxp/*8987*" +FILES:${PN}-nxp8997-common = " \ + ${nonarch_base_libdir}/firmware/nxp/uartuart8997_bt_v4.bin \ + ${nonarch_base_libdir}/firmware/nxp/helper_uart_3000000.bin \ +" +ALLOW_EMPTY:${PN}-nxp8997-pcie = "1" +ALLOW_EMPTY:${PN}-nxp8997-sdio = "1" +FILES:${PN}-nxp9098-common = "${nonarch_base_libdir}/firmware/nxp/uartuart9098_bt_v1.bin" +ALLOW_EMPTY:${PN}-nxp9098-pcie = "1" +ALLOW_EMPTY:${PN}-nxp9098-sdio = "1" +FILES:${PN}-nxpiw416-sdio = "${nonarch_base_libdir}/firmware/nxp/*iw416*" +FILES:${PN}-nxpiw612-sdio = "${nonarch_base_libdir}/firmware/nxp/uartspi_n61x_v1.bin.se" +FILES:${PN}-nxp-license = "${nonarch_base_libdir}/firmware/LICENSE.nxp" + +RDEPENDS:${PN}-nxp8987-sdio += "${PN}-nxp-license" +RDEPENDS:${PN}-nxp8997-common += "${PN}-nxp-license" +RDEPENDS:${PN}-nxp8997-pcie += "${PN}-nxp8997-common" +RDEPENDS:${PN}-nxp8997-sdio += "${PN}-nxp8997-common" +RDEPENDS:${PN}-nxp9098-common += "${PN}-nxp-license" +RDEPENDS:${PN}-nxp9098-pcie += "${PN}-nxp9098-common" +RDEPENDS:${PN}-nxp9098-sdio += "${PN}-nxp9098-common" +RDEPENDS:${PN}-nxpiw416-sdio += "${PN}-nxp-license" +RDEPENDS:${PN}-nxpiw612-sdio += "${PN}-nxp-license" + +# For nxp-mc +LICENSE:${PN}-nxp-mc = "Firmware-nxp_mc_firmware" +LICENSE:${PN}-nxp-mc-license = "Firmware-nxp_mc_firmware" + +FILES:${PN}-nxp-mc= "${nonarch_base_libdir}/firmware/dpaa2/mc/*" +FILES:${PN}-nxp-mc-license = " \ + ${nonarch_base_libdir}/firmware/LICENSE.nxp_mc_firmware \ +" +RDEPENDS:${PN}-nxp-mc += "${PN}-nxp-mc-license" + +# For Nvidia +LICENSE:${PN}-nvidia-gpu = "Firmware-nvidia" +LICENSE:${PN}-nvidia-tegra = "Firmware-nvidia" +LICENSE:${PN}-nvidia-tegra-k1 = "Firmware-nvidia" +LICENSE:${PN}-nvidia-license = "Firmware-nvidia" + +FILES:${PN}-nvidia-gpu = "${nonarch_base_libdir}/firmware/nvidia" +FILES:${PN}-nvidia-tegra = " \ + ${nonarch_base_libdir}/firmware/nvidia/tegra* \ + ${nonarch_base_libdir}/firmware/nvidia/gm20b \ + ${nonarch_base_libdir}/firmware/nvidia/gp10b \ +" +FILES:${PN}-nvidia-tegra-k1 = " \ + ${nonarch_base_libdir}/firmware/nvidia/tegra124 \ + ${nonarch_base_libdir}/firmware/nvidia/gk20a \ +" +FILES:${PN}-nvidia-license = "${nonarch_base_libdir}/firmware/LICENCE.nvidia" + +RDEPENDS:${PN}-nvidia-gpu += "${PN}-nvidia-license" +RDEPENDS:${PN}-nvidia-tegra += "${PN}-nvidia-license" +RDEPENDS:${PN}-nvidia-tegra-k1 += "${PN}-nvidia-license" + +# For OLPC +LICENSE:${PN}-olpc = "Firmware-OLPC" +LICENSE:${PN}-olpc-license = "Firmware-OLPC" + +FILES:${PN}-olpc = " \ + ${nonarch_base_libdir}/firmware/libertas/lbtf_sdio.bin \ + ${nonarch_base_libdir}/firmware/lbtf_usb.bin \ + ${nonarch_base_libdir}/firmware/libertas/usb8388_olpc.bin \ +" +FILES:${PN}-olpc-license = "${nonarch_base_libdir}/firmware/LICENCE.OLPC" + +RDEPENDS:${PN}-olpc += "${PN}-olpc-license" + +# For phanfw +LICENSE:${PN}-phanfw = "Firmware-phanfw" +LICENSE:${PN}-phanfw-license = "Firmware-phanfw" + +FILES:${PN}-phanfw = "${nonarch_base_libdir}/firmware/phanfw.bin" +FILES:${PN}-phanfw-license = "${nonarch_base_libdir}/firmware/LICENCE.phanfw" + +RDEPENDS:${PN}-phanfw += "${PN}-phanfw-license" + +# For PowerVR +LICENSE:${PN}-powervr = "Firmware-powervr" +LICENSE:${PN}-powervr-license = "Firmware-powervr" + +FILES:${PN}-powervr = "${nonarch_base_libdir}/firmware/powervr" +FILES:${PN}-powervr-license = "${nonarch_base_libdir}/firmware/LICENSE.powervr" + +RDEPENDS:${PN}-powervr += "${PN}-powervr-license" + +# For qla2xxx +LICENSE:${PN}-qla2xxx = "Firmware-qla2xxx" +LICENSE:${PN}-qla2xxx-license = "Firmware-qla2xxx" + +FILES:${PN}-qla2xxx = "${nonarch_base_libdir}/firmware/ql2*" +FILES:${PN}-qla2xxx-license = "${nonarch_base_libdir}/firmware/LICENCE.qla2xxx" + +RDEPENDS:${PN}-qla2xxx += "${PN}-qla2xxx-license" + +# For RSI RS911x WiFi +LICENSE:${PN}-rs9113 = "WHENCE" +LICENSE:${PN}-rs9116 = "WHENCE" + +FILES:${PN}-rs9113 = " ${nonarch_base_libdir}/firmware/rsi/rs9113*.rps " +FILES:${PN}-rs9116 = " ${nonarch_base_libdir}/firmware/rsi/rs9116*.rps " + +RDEPENDS:${PN}-rs9113 += "${PN}-whence-license" +RDEPENDS:${PN}-rs9116 += "${PN}-whence-license" + +# For rtl +LICENSE:${PN}-rtl8188 = "Firmware-rtlwifi_firmware" +LICENSE:${PN}-rtl8192cu = "Firmware-rtlwifi_firmware" +LICENSE:${PN}-rtl8192ce = "Firmware-rtlwifi_firmware" +LICENSE:${PN}-rtl8192su = "Firmware-rtlwifi_firmware" +LICENSE:${PN}-rtl8723 = "Firmware-rtlwifi_firmware" +LICENSE:${PN}-rtl8761 = "Firmware-rtlwifi_firmware" +LICENSE:${PN}-rtl8821 = "Firmware-rtlwifi_firmware" +LICENSE:${PN}-rtl8822 = "Firmware-rtlwifi_firmware" +LICENSE:${PN}-rtl-license = "Firmware-rtlwifi_firmware" +LICENSE:${PN}-rtl-nic = "WHENCE" +LICENSE:${PN}-rtl8168 = "WHENCE" + +FILES:${PN}-rtl-license = " \ + ${nonarch_base_libdir}/firmware/LICENCE.rtlwifi_firmware.txt \ +" +FILES:${PN}-rtl8188 = " \ + ${nonarch_base_libdir}/firmware/rtlwifi/rtl8188*.bin \ +" +FILES:${PN}-rtl8192cu = " \ + ${nonarch_base_libdir}/firmware/rtlwifi/rtl8192cufw*.bin \ +" +FILES:${PN}-rtl8192ce = " \ + ${nonarch_base_libdir}/firmware/rtlwifi/rtl8192cfw*.bin \ +" +FILES:${PN}-rtl8192su = " \ + ${nonarch_base_libdir}/firmware/rtlwifi/rtl8712u.bin \ +" +FILES:${PN}-rtl8723 = " \ + ${nonarch_base_libdir}/firmware/rtlwifi/rtl8723*.bin \ +" +FILES:${PN}-rtl8821 = " \ + ${nonarch_base_libdir}/firmware/rtlwifi/rtl8821*.bin \ + ${nonarch_base_libdir}/firmware/rtw88/rtw8821*.bin \ +" +FILES:${PN}-rtl8761 = " \ + ${nonarch_base_libdir}/firmware/rtl_bt/rtl8761*.bin \ +" +FILES:${PN}-rtl8168 = " \ + ${nonarch_base_libdir}/firmware/rtl_nic/rtl8168*.fw \ +" +FILES:${PN}-rtl8822 = " \ + ${nonarch_base_libdir}/firmware/rtl_bt/rtl8822*.bin \ + ${nonarch_base_libdir}/firmware/rtw88/rtw8822*.bin \ + ${nonarch_base_libdir}/firmware/rtlwifi/rtl8822*.bin \ +" +FILES:${PN}-rtl-nic = " \ + ${nonarch_base_libdir}/firmware/rtl_nic/*.fw \ +" + +RDEPENDS:${PN}-rtl8188 += "${PN}-rtl-license" +RDEPENDS:${PN}-rtl8192ce += "${PN}-rtl-license" +RDEPENDS:${PN}-rtl8192cu += "${PN}-rtl-license" +RDEPENDS:${PN}-rtl8192su = "${PN}-rtl-license" +RDEPENDS:${PN}-rtl8723 += "${PN}-rtl-license" +RDEPENDS:${PN}-rtl8821 += "${PN}-rtl-license" +RDEPENDS:${PN}-rtl8761 += "${PN}-rtl-license" +RDEPENDS:${PN}-rtl8822 += "${PN}-rtl-license" +RDEPENDS:${PN}-rtl8168 += "${PN}-whence-license" +RDEPENDS:${PN}-rtl-nic += "${PN}-whence-license" + +# For TI wl1251 +LICENSE:${PN}-wl1251 = "Firmware-wl1251" +LICENSE:${PN}-wl1251-license = "Firmware-wl1251" + +FILES:${PN}-wl1251 = " \ + ${nonarch_base_libdir}/firmware/ti-connectivity/wl1251-fw.bin \ + ${nonarch_base_libdir}/firmware/ti-connectivity/wl1251-nvs.bin \ +" +FILES:${PN}-wl1251-license = "${nonarch_base_libdir}/firmware/LICENCE.wl1251" + +RDEPENDS:${PN}-wl1251 += "${PN}-wl1251-license" + +# For ti-connectivity +LICENSE:${PN}-wlcommon = "Firmware-ti-connectivity" +LICENSE:${PN}-wl12xx = "Firmware-ti-connectivity" +LICENSE:${PN}-wl18xx = "Firmware-ti-connectivity" +LICENSE:${PN}-ti-connectivity-license = "Firmware-ti-connectivity" + +FILES:${PN}-ti-connectivity-license = "${nonarch_base_libdir}/firmware/LICENCE.ti-connectivity" +# wl18xx optionally needs wl1271-nvs.bin (which itself is a symlink to +# wl127x-nvs.bin) - see linux/drivers/net/wireless/ti/wlcore/sdio.c +# and drivers/net/wireless/ti/wlcore/spi.c. +# While they're optional and actually only used to override the MAC +# address on wl18xx, driver loading will delay (by udev timout - 60s) +# if not there. So let's make it available always. Because it's a +# symlink, both need to go to wlcommon. +FILES:${PN}-wlcommon = " \ + ${nonarch_base_libdir}/firmware/ti-connectivity/TI* \ + ${nonarch_base_libdir}/firmware/ti-connectivity/wl127x-nvs.bin \ + ${nonarch_base_libdir}/firmware/ti-connectivity/wl1271-nvs.bin \ +" +FILES:${PN}-wl12xx = " \ + ${nonarch_base_libdir}/firmware/ti-connectivity/wl12* \ +" +FILES:${PN}-wl18xx = " \ + ${nonarch_base_libdir}/firmware/ti-connectivity/wl18* \ +" + +RDEPENDS:${PN}-wl12xx = "${PN}-ti-connectivity-license ${PN}-wlcommon" +RDEPENDS:${PN}-wl18xx = "${PN}-ti-connectivity-license ${PN}-wlcommon" + +# For ti-keystone +LICENSE:${PN}-ti-keystone = "Firmware-ti-keystone" +LICENSE:${PN}-ti-keystone-license = "Firmware-ti-keystone" + +FILES:${PN}-ti-keystone = "${nonarch_base_libdir}/firmware/ti-keystone/*" +FILES:${PN}-ti-keystone-license = " \ + ${nonarch_base_libdir}/firmware/LICENCE.ti-keystone \ +" +RDEPENDS:${PN}-ti-keystone += "${PN}-ti-keystone-license" + +# For vt6656 +LICENSE:${PN}-vt6656 = "Firmware-via_vt6656" +LICENSE:${PN}-vt6656-license = "Firmware-via_vt6656" + +FILES:${PN}-vt6656-license = "${nonarch_base_libdir}/firmware/LICENCE.via_vt6656" +FILES:${PN}-vt6656 = " \ + ${nonarch_base_libdir}/firmware/vntwusb.fw \ +" + +RDEPENDS:${PN}-vt6656 = "${PN}-vt6656-license" + +# For xc4000 +LICENSE:${PN}-xc4000 = "Firmware-xc4000" +LICENSE:${PN}-xc4000-license = "Firmware-xc4000" + +FILES:${PN}-xc4000 = "${nonarch_base_libdir}/firmware/dvb-fe-xc4000-1.4.1.fw" +FILES:${PN}-xc4000-license = "${nonarch_base_libdir}/firmware/LICENCE.xc4000" + +RDEPENDS:${PN}-xc4000 += "${PN}-xc4000-license" + +# For xc5000 +LICENSE:${PN}-xc5000 = "Firmware-xc5000" +LICENSE:${PN}-xc5000-license = "Firmware-xc5000" + +FILES:${PN}-xc5000 = "${nonarch_base_libdir}/firmware/dvb-fe-xc5000-1.6.114.fw" +FILES:${PN}-xc5000-license = "${nonarch_base_libdir}/firmware/LICENCE.xc5000" + +RDEPENDS:${PN}-xc5000 += "${PN}-xc5000-license" + +# For xc5000c +LICENSE:${PN}-xc5000c = "Firmware-xc5000c" +LICENSE:${PN}-xc5000c-license = "Firmware-xc5000c" + +FILES:${PN}-xc5000c = " \ + ${nonarch_base_libdir}/firmware/dvb-fe-xc5000c-4.1.30.7.fw \ +" +FILES:${PN}-xc5000c-license = "${nonarch_base_libdir}/firmware/LICENCE.xc5000c" + +RDEPENDS:${PN}-xc5000c += "${PN}-xc5000c-license" + +# For broadcom + +# for i in `grep brcm WHENCE | grep ^File | sed 's/File: brcm.//g'`; do pkg=`echo $i | sed 's/-[sp40].*//g; s/\.bin//g; s/brcmfmac/bcm/g; s/_hdr/-hdr/g; s/BCM/bcm-0bb4-0306/g'`; echo -e " \${PN}-$pkg \\"; done | sort -u + +LICENSE:${PN}-broadcom-license = "Firmware-broadcom_bcm43xx" +FILES:${PN}-broadcom-license = "${nonarch_base_libdir}/firmware/LICENCE.broadcom_bcm43xx" + +# for i in `grep brcm WHENCE | grep ^File | sed 's/File: brcm.//g'`; do pkg=`echo $i | sed 's/-[sp40].*//g; s/\.bin//g; s/brcmfmac/bcm/g; s/_hdr/-hdr/g; s/BCM/bcm-0bb4-0306/g'`; echo "$i - $pkg"; echo -e "FILES:\${PN}-$pkg = \"\${nonarch_base_libdir}/firmware/brcm/$i\""; done | grep ^FILES + +FILES:${PN}-bcm43xx = "${nonarch_base_libdir}/firmware/brcm/bcm43xx-0.fw" +FILES:${PN}-bcm43xx-hdr = "${nonarch_base_libdir}/firmware/brcm/bcm43xx_hdr-0.fw" +FILES:${PN}-bcm4329-fullmac = "${nonarch_base_libdir}/firmware/brcm/bcm4329-fullmac-4.bin" +FILES:${PN}-bcm43236b = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43236b.bin" +FILES:${PN}-bcm4329 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4329-sdio.bin" +FILES:${PN}-bcm4330 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4330-sdio.*" +FILES:${PN}-bcm4334 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4334-sdio.bin" +FILES:${PN}-bcm4335 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4335-sdio.bin" +FILES:${PN}-bcm4339 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4339-sdio.bin \ + ${nonarch_base_libdir}/firmware/cypress/cyfmac4339-sdio.bin \ +" +FILES:${PN}-bcm43241b0 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43241b0-sdio.bin" +FILES:${PN}-bcm43241b4 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43241b4-sdio.bin" +FILES:${PN}-bcm43241b5 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43241b5-sdio.bin" +FILES:${PN}-bcm43242a = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43242a.bin" +FILES:${PN}-bcm43143 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43143.bin \ + ${nonarch_base_libdir}/firmware/brcm/brcmfmac43143-sdio.bin \ +" +FILES:${PN}-bcm43430a0 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43430a0-sdio.*" +FILES:${PN}-bcm43455 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43455-sdio.* \ + ${nonarch_base_libdir}/firmware/cypress/cyfmac43455-sdio.* \ +" +FILES:${PN}-bcm4350c2 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4350c2-pcie.bin" +FILES:${PN}-bcm4350 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4350-pcie.bin" +FILES:${PN}-bcm4356 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4356-sdio.* \ + ${nonarch_base_libdir}/firmware/cypress/cyfmac4356-sdio.* \ +" +FILES:${PN}-bcm43569 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43569.bin" +FILES:${PN}-bcm43570 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43570-pcie.bin \ + ${nonarch_base_libdir}/firmware/cypress/cyfmac43570-pcie.bin \ +" +FILES:${PN}-bcm4358 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4358-pcie.bin" +FILES:${PN}-bcm43602 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43602-pcie.bin \ + ${nonarch_base_libdir}/firmware/brcm/brcmfmac43602-pcie.ap.bin \ +" +FILES:${PN}-bcm4366b = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4366b-pcie.bin" +FILES:${PN}-bcm4366c = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4366c-pcie.bin" +FILES:${PN}-bcm4371 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4371-pcie.bin" + +# for i in `grep brcm WHENCE | grep ^File | sed 's/File: brcm.//g'`; do pkg=`echo $i | sed 's/-[sp40].*//g; s/\.bin//g; s/brcmfmac/bcm/g; s/_hdr/-hdr/g; s/BCM/bcm-0bb4-0306/g'`; echo -e "LICENSE:\${PN}-$pkg = \"Firmware-broadcom_bcm43xx\"\nRDEPENDS_\${PN}-$pkg += \"\${PN}-broadcom-license\""; done +# Currently 1st one and last 6 have cypress LICENSE + +LICENSE:${PN}-bcm43xx = "Firmware-broadcom_bcm43xx" +RDEPENDS:${PN}-bcm43xx += "${PN}-broadcom-license" +LICENSE:${PN}-bcm43xx-hdr = "Firmware-broadcom_bcm43xx" +RDEPENDS:${PN}-bcm43xx-hdr += "${PN}-broadcom-license" +LICENSE:${PN}-bcm4329-fullmac = "Firmware-broadcom_bcm43xx" +RDEPENDS:${PN}-bcm4329-fullmac += "${PN}-broadcom-license" +LICENSE:${PN}-bcm43236b = "Firmware-broadcom_bcm43xx" +RDEPENDS:${PN}-bcm43236b += "${PN}-broadcom-license" +LICENSE:${PN}-bcm4329 = "Firmware-broadcom_bcm43xx" +RDEPENDS:${PN}-bcm4329 += "${PN}-broadcom-license" +LICENSE:${PN}-bcm4330 = "Firmware-broadcom_bcm43xx" +RDEPENDS:${PN}-bcm4330 += "${PN}-broadcom-license" +LICENSE:${PN}-bcm4334 = "Firmware-broadcom_bcm43xx" +RDEPENDS:${PN}-bcm4334 += "${PN}-broadcom-license" +LICENSE:${PN}-bcm4335 = "Firmware-broadcom_bcm43xx" +RDEPENDS:${PN}-bcm4335 += "${PN}-broadcom-license" +LICENSE:${PN}-bcm4339 = "Firmware-broadcom_bcm43xx" +RDEPENDS:${PN}-bcm4339 += "${PN}-broadcom-license" +LICENSE:${PN}-bcm43241b0 = "Firmware-broadcom_bcm43xx" +RDEPENDS:${PN}-bcm43241b0 += "${PN}-broadcom-license" +LICENSE:${PN}-bcm43241b4 = "Firmware-broadcom_bcm43xx" +RDEPENDS:${PN}-bcm43241b4 += "${PN}-broadcom-license" +LICENSE:${PN}-bcm43241b5 = "Firmware-broadcom_bcm43xx" +RDEPENDS:${PN}-bcm43241b5 += "${PN}-broadcom-license" +LICENSE:${PN}-bcm43242a = "Firmware-broadcom_bcm43xx" +RDEPENDS:${PN}-bcm43242a += "${PN}-broadcom-license" +LICENSE:${PN}-bcm43143 = "Firmware-broadcom_bcm43xx" +RDEPENDS:${PN}-bcm43143 += "${PN}-broadcom-license" +LICENSE:${PN}-bcm43430a0 = "Firmware-broadcom_bcm43xx" +RDEPENDS:${PN}-bcm43430a0 += "${PN}-broadcom-license" +LICENSE:${PN}-bcm43455 = "Firmware-broadcom_bcm43xx" +RDEPENDS:${PN}-bcm43455 += "${PN}-broadcom-license" +LICENSE:${PN}-bcm4350c2 = "Firmware-broadcom_bcm43xx" +RDEPENDS:${PN}-bcm4350c2 += "${PN}-broadcom-license" +LICENSE:${PN}-bcm4350 = "Firmware-broadcom_bcm43xx" +RDEPENDS:${PN}-bcm4350 += "${PN}-broadcom-license" +LICENSE:${PN}-bcm4356 = "Firmware-broadcom_bcm43xx" +RDEPENDS:${PN}-bcm4356 += "${PN}-broadcom-license" +LICENSE:${PN}-bcm43569 = "Firmware-broadcom_bcm43xx" +RDEPENDS:${PN}-bcm43569 += "${PN}-broadcom-license" +LICENSE:${PN}-bcm43570 = "Firmware-broadcom_bcm43xx" +RDEPENDS:${PN}-bcm43570 += "${PN}-broadcom-license" +LICENSE:${PN}-bcm4358 = "Firmware-broadcom_bcm43xx" +RDEPENDS:${PN}-bcm4358 += "${PN}-broadcom-license" +LICENSE:${PN}-bcm43602 = "Firmware-broadcom_bcm43xx" +RDEPENDS:${PN}-bcm43602 += "${PN}-broadcom-license" +LICENSE:${PN}-bcm4366b = "Firmware-broadcom_bcm43xx" +RDEPENDS:${PN}-bcm4366b += "${PN}-broadcom-license" +LICENSE:${PN}-bcm4366c = "Firmware-broadcom_bcm43xx" +RDEPENDS:${PN}-bcm4366c += "${PN}-broadcom-license" +LICENSE:${PN}-bcm4371 = "Firmware-broadcom_bcm43xx" +RDEPENDS:${PN}-bcm4371 += "${PN}-broadcom-license" + +# For broadcom cypress + +LICENSE:${PN}-cypress-license = "Firmware-cypress" +FILES:${PN}-cypress-license = "${nonarch_base_libdir}/firmware/LICENCE.cypress" + +FILES:${PN}-bcm-0bb4-0306 = "${nonarch_base_libdir}/firmware/brcm/BCM-0bb4-0306.hcd" +FILES:${PN}-bcm43340 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43340-sdio.* \ + ${nonarch_base_libdir}/firmware/cypress/cyfmac43340-sdio.*" +FILES:${PN}-bcm43362 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43362-sdio.* \ + ${nonarch_base_libdir}/firmware/cypress/cyfmac43362-sdio.*" +FILES:${PN}-bcm43430 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43430-sdio.* \ + ${nonarch_base_libdir}/firmware/cypress/cyfmac43430-sdio.*" +FILES:${PN}-bcm4354 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4354-sdio.bin \ + ${nonarch_base_libdir}/firmware/cypress/cyfmac4354-sdio.bin \ +" +FILES:${PN}-bcm4356-pcie = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4356-pcie.* \ + ${nonarch_base_libdir}/firmware/cypress/cyfmac4356-pcie.* \ +" +FILES:${PN}-bcm4373 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4373-sdio.bin \ + ${nonarch_base_libdir}/firmware/brcm/brcmfmac4373.bin \ + ${nonarch_base_libdir}/firmware/cypress/cyfmac4373-sdio.bin \ + ${nonarch_base_libdir}/firmware/brcm/brcmfmac4373-sdio.clm_blob \ + ${nonarch_base_libdir}/firmware/cypress/cyfmac4373-sdio.clm_blob \ +" + +LICENSE:${PN}-bcm-0bb4-0306 = "Firmware-cypress" +RDEPENDS:${PN}-bcm-0bb4-0306 += "${PN}-cypress-license" +LICENSE:${PN}-bcm43340 = "Firmware-cypress" +RDEPENDS:${PN}-bcm43340 += "${PN}-cypress-license" +LICENSE:${PN}-bcm43362 = "Firmware-cypress" +RDEPENDS:${PN}-bcm43362 += "${PN}-cypress-license" +LICENSE:${PN}-bcm43430 = "Firmware-cypress" +RDEPENDS:${PN}-bcm43430 += "${PN}-cypress-license" +LICENSE:${PN}-bcm4354 = "Firmware-cypress" +RDEPENDS:${PN}-bcm4354 += "${PN}-cypress-license" +LICENSE:${PN}-bcm4356-pcie = "Firmware-cypress" +RDEPENDS:${PN}-bcm4356-pcie += "${PN}-cypress-license" +LICENSE:${PN}-bcm4373 = "Firmware-cypress" +RDEPENDS:${PN}-bcm4373 += "${PN}-cypress-license" + +# For Broadcom bnx2 +# +# which is a separate case to the other Broadcom firmwares since its +# license is contained in the shared WHENCE file. + +LICENSE:${PN}-bnx2 = "WHENCE" +LICENSE:${PN}-whence-license = "WHENCE" + +FILES:${PN}-bnx2 = " \ + ${nonarch_base_libdir}/firmware/bnx2/bnx2-mips*.fw \ + ${nonarch_base_libdir}/firmware/bnx2/bnx2-rv2p*.fw \ +" +FILES:${PN}-whence-license = "${nonarch_base_libdir}/firmware/WHENCE" + +RDEPENDS:${PN}-bnx2 += "${PN}-whence-license" +RPROVIDES:${PN}-bnx2 = "${PN}-bnx2-mips" + +LICENSE:${PN}-bnx2x = "WHENCE" + +FILES:${PN}-bnx2x = "${nonarch_base_libdir}/firmware/bnx2x/bnx2x*.fw" + +RDEPENDS:${PN}-bnx2x += "${PN}-whence-license" + +# For cirrus +LICENSE:${PN}-cirrus = "Firmware-cirrus" +LICENSE:${PN}-cirrus-license = "Firmware-cirrus" + +FILES:${PN}-cirrus = "${nonarch_base_libdir}/firmware/cirrus/*" +FILES:${PN}-cirrus-license = "${nonarch_base_libdir}/firmware/LICENSE.cirrus" + +RDEPENDS:${PN}-cirrus += "${PN}-cirrus-license" + +# For cnm +LICENSE:${PN}-cnm = "Firmware-cnm" +LICENSE:${PN}-cnm-license = "Firmware-cnm" + +FILES:${PN}-cnm = "${nonarch_base_libdir}/firmware/cnm/wave521c_k3_codec_fw.bin" +FILES:${PN}-cnm-license = "${nonarch_base_libdir}/firmware/LICENCE.cnm" + +RDEPENDS:${PN}-cnm += "${PN}-cnm-license" + +# For imx-sdma +LICENSE:${PN}-imx-sdma-imx6q = "Firmware-imx-sdma_firmware" +LICENSE:${PN}-imx-sdma-imx7d = "Firmware-imx-sdma_firmware" +LICENSE:${PN}-imx-sdma-license = "Firmware-imx-sdma_firmware" + +FILES:${PN}-imx-sdma-imx6q = "${nonarch_base_libdir}/firmware/imx/sdma/sdma-imx6q.bin" + +RPROVIDES:${PN}-imx-sdma-imx6q = "firmware-imx-sdma-imx6q" +RREPLACES:${PN}-imx-sdma-imx6q = "firmware-imx-sdma-imx6q" +RCONFLICTS:${PN}-imx-sdma-imx6q = "firmware-imx-sdma-imx6q" + +FILES:${PN}-imx-sdma-imx7d = "${nonarch_base_libdir}/firmware/imx/sdma/sdma-imx7d.bin" + +FILES:${PN}-imx-sdma-license = "${nonarch_base_libdir}/firmware/LICENSE.sdma_firmware" + +RDEPENDS:${PN}-imx-sdma-imx6q += "${PN}-imx-sdma-license" +RDEPENDS:${PN}-imx-sdma-imx7d += "${PN}-imx-sdma-license" + +# For iwlwifi +LICENSE:${PN}-iwlwifi = "Firmware-iwlwifi_firmware" +LICENSE:${PN}-iwlwifi-135-6 = "Firmware-iwlwifi_firmware" +LICENSE:${PN}-iwlwifi-3160-7 = "Firmware-iwlwifi_firmware" +LICENSE:${PN}-iwlwifi-3160-8 = "Firmware-iwlwifi_firmware" +LICENSE:${PN}-iwlwifi-3160-9 = "Firmware-iwlwifi_firmware" +LICENSE:${PN}-iwlwifi-3160-10 = "Firmware-iwlwifi_firmware" +LICENSE:${PN}-iwlwifi-3160-12 = "Firmware-iwlwifi_firmware" +LICENSE:${PN}-iwlwifi-3160-13 = "Firmware-iwlwifi_firmware" +LICENSE:${PN}-iwlwifi-3160-16 = "Firmware-iwlwifi_firmware" +LICENSE:${PN}-iwlwifi-3160-17 = "Firmware-iwlwifi_firmware" +LICENSE:${PN}-iwlwifi-6000-4 = "Firmware-iwlwifi_firmware" +LICENSE:${PN}-iwlwifi-6000g2a-5 = "Firmware-iwlwifi_firmware" +LICENSE:${PN}-iwlwifi-6000g2a-6 = "Firmware-iwlwifi_firmware" +LICENSE:${PN}-iwlwifi-6000g2b-5 = "Firmware-iwlwifi_firmware" +LICENSE:${PN}-iwlwifi-6000g2b-6 = "Firmware-iwlwifi_firmware" +LICENSE:${PN}-iwlwifi-6050-4 = "Firmware-iwlwifi_firmware" +LICENSE:${PN}-iwlwifi-6050-5 = "Firmware-iwlwifi_firmware" +LICENSE:${PN}-iwlwifi-7260 = "Firmware-iwlwifi_firmware" +LICENSE:${PN}-iwlwifi-7265 = "Firmware-iwlwifi_firmware" +LICENSE:${PN}-iwlwifi-7265d = "Firmware-iwlwifi_firmware" +LICENSE:${PN}-iwlwifi-8000c = "Firmware-iwlwifi_firmware" +LICENSE:${PN}-iwlwifi-8265 = "Firmware-iwlwifi_firmware" +LICENSE:${PN}-iwlwifi-9000 = "Firmware-iwlwifi_firmware" +LICENSE:${PN}-iwlwifi-9260 = "Firmware-iwlwifi_firmware" +LICENSE:${PN}-iwlwifi-misc = "Firmware-iwlwifi_firmware" +LICENSE:${PN}-iwlwifi-license = "Firmware-iwlwifi_firmware" + + +FILES:${PN}-iwlwifi-license = "${nonarch_base_libdir}/firmware/LICENCE.iwlwifi_firmware" +FILES:${PN}-iwlwifi-135-6 = "${nonarch_base_libdir}/firmware/iwlwifi-135-6.ucode" +FILES:${PN}-iwlwifi-3160-7 = "${nonarch_base_libdir}/firmware/iwlwifi-3160-7.ucode" +FILES:${PN}-iwlwifi-3160-8 = "${nonarch_base_libdir}/firmware/iwlwifi-3160-8.ucode" +FILES:${PN}-iwlwifi-3160-9 = "${nonarch_base_libdir}/firmware/iwlwifi-3160-9.ucode" +FILES:${PN}-iwlwifi-3160-10 = "${nonarch_base_libdir}/firmware/iwlwifi-3160-10.ucode" +FILES:${PN}-iwlwifi-3160-12 = "${nonarch_base_libdir}/firmware/iwlwifi-3160-12.ucode" +FILES:${PN}-iwlwifi-3160-13 = "${nonarch_base_libdir}/firmware/iwlwifi-3160-13.ucode" +FILES:${PN}-iwlwifi-3160-16 = "${nonarch_base_libdir}/firmware/iwlwifi-3160-16.ucode" +FILES:${PN}-iwlwifi-3160-17 = "${nonarch_base_libdir}/firmware/iwlwifi-3160-17.ucode" +FILES:${PN}-iwlwifi-6000-4 = "${nonarch_base_libdir}/firmware/iwlwifi-6000-4.ucode" +FILES:${PN}-iwlwifi-6000g2a-5 = "${nonarch_base_libdir}/firmware/iwlwifi-6000g2a-5.ucode" +FILES:${PN}-iwlwifi-6000g2a-6 = "${nonarch_base_libdir}/firmware/iwlwifi-6000g2a-6.ucode" +FILES:${PN}-iwlwifi-6000g2b-5 = "${nonarch_base_libdir}/firmware/iwlwifi-6000g2b-5.ucode" +FILES:${PN}-iwlwifi-6000g2b-6 = "${nonarch_base_libdir}/firmware/iwlwifi-6000g2b-6.ucode" +FILES:${PN}-iwlwifi-6050-4 = "${nonarch_base_libdir}/firmware/iwlwifi-6050-4.ucode" +FILES:${PN}-iwlwifi-6050-5 = "${nonarch_base_libdir}/firmware/iwlwifi-6050-5.ucode" +FILES:${PN}-iwlwifi-7260 = "${nonarch_base_libdir}/firmware/iwlwifi-7260-*.ucode" +FILES:${PN}-iwlwifi-7265 = "${nonarch_base_libdir}/firmware/iwlwifi-7265-*.ucode" +FILES:${PN}-iwlwifi-7265d = "${nonarch_base_libdir}/firmware/iwlwifi-7265D-*.ucode" +FILES:${PN}-iwlwifi-8000c = "${nonarch_base_libdir}/firmware/iwlwifi-8000C-*.ucode" +FILES:${PN}-iwlwifi-8265 = "${nonarch_base_libdir}/firmware/iwlwifi-8265-*.ucode" +FILES:${PN}-iwlwifi-9000 = "${nonarch_base_libdir}/firmware/iwlwifi-9000-*.ucode" +FILES:${PN}-iwlwifi-9260 = "${nonarch_base_libdir}/firmware/iwlwifi-9260-*.ucode" +FILES:${PN}-iwlwifi-misc = " \ + ${nonarch_base_libdir}/firmware/iwlwifi-*.ucode \ + ${nonarch_base_libdir}/firmware/iwlwifi-*.pnvm \ +" + +RDEPENDS:${PN}-iwlwifi-135-6 = "${PN}-iwlwifi-license" +RDEPENDS:${PN}-iwlwifi-3160-7 = "${PN}-iwlwifi-license" +RDEPENDS:${PN}-iwlwifi-3160-8 = "${PN}-iwlwifi-license" +RDEPENDS:${PN}-iwlwifi-3160-9 = "${PN}-iwlwifi-license" +RDEPENDS:${PN}-iwlwifi-3160-10 = "${PN}-iwlwifi-license" +RDEPENDS:${PN}-iwlwifi-3160-12 = "${PN}-iwlwifi-license" +RDEPENDS:${PN}-iwlwifi-3160-13 = "${PN}-iwlwifi-license" +RDEPENDS:${PN}-iwlwifi-3160-16 = "${PN}-iwlwifi-license" +RDEPENDS:${PN}-iwlwifi-3160-17 = "${PN}-iwlwifi-license" +RDEPENDS:${PN}-iwlwifi-6000-4 = "${PN}-iwlwifi-license" +RDEPENDS:${PN}-iwlwifi-6000g2a-5 = "${PN}-iwlwifi-license" +RDEPENDS:${PN}-iwlwifi-6000g2a-6 = "${PN}-iwlwifi-license" +RDEPENDS:${PN}-iwlwifi-6000g2b-5 = "${PN}-iwlwifi-license" +RDEPENDS:${PN}-iwlwifi-6000g2b-6 = "${PN}-iwlwifi-license" +RDEPENDS:${PN}-iwlwifi-6050-4 = "${PN}-iwlwifi-license" +RDEPENDS:${PN}-iwlwifi-6050-5 = "${PN}-iwlwifi-license" +RDEPENDS:${PN}-iwlwifi-7260 = "${PN}-iwlwifi-license" +RDEPENDS:${PN}-iwlwifi-7265 = "${PN}-iwlwifi-license" +RDEPENDS:${PN}-iwlwifi-7265d = "${PN}-iwlwifi-license" +RDEPENDS:${PN}-iwlwifi-8000c = "${PN}-iwlwifi-license" +RDEPENDS:${PN}-iwlwifi-8265 = "${PN}-iwlwifi-license" +RDEPENDS:${PN}-iwlwifi-9000 = "${PN}-iwlwifi-license" +RDEPENDS:${PN}-iwlwifi-9260 = "${PN}-iwlwifi-license" +RDEPENDS:${PN}-iwlwifi-misc = "${PN}-iwlwifi-license" + +# -iwlwifi-misc is a "catch all" package that includes all the iwlwifi +# firmwares that are not already included in other -iwlwifi- packages. +# -iwlwifi is a virtual package that depends upon all iwlwifi packages. +# These are distinct in order to allow the -misc firmwares to be installed +# without pulling in every other iwlwifi package. +ALLOW_EMPTY:${PN}-iwlwifi = "1" +ALLOW_EMPTY:${PN}-iwlwifi-misc = "1" + +# Handle package updating for the newly merged iwlwifi groupings +RPROVIDES:${PN}-iwlwifi-7265 = "${PN}-iwlwifi-7265-8 ${PN}-iwlwifi-7265-9" +RREPLACES:${PN}-iwlwifi-7265 = "${PN}-iwlwifi-7265-8 ${PN}-iwlwifi-7265-9" +RCONFLICTS:${PN}-iwlwifi-7265 = "${PN}-iwlwifi-7265-8 ${PN}-iwlwifi-7265-9" + +RPROVIDES:${PN}-iwlwifi-7260 = "${PN}-iwlwifi-7260-7 ${PN}-iwlwifi-7260-8 ${PN}-iwlwifi-7260-9" +RREPLACES:${PN}-iwlwifi-7260 = "${PN}-iwlwifi-7260-7 ${PN}-iwlwifi-7260-8 ${PN}-iwlwifi-7260-9" +RCONFLICTS:${PN}-iwlwifi-7260 = "${PN}-iwlwifi-7260-7 ${PN}-iwlwifi-7260-8 ${PN}-iwlwifi-7260-9" + +# For ibt +LICENSE:${PN}-ibt-license = "Firmware-ibt_firmware" +LICENSE:${PN}-ibt-hw-37-7 = "Firmware-ibt_firmware" +LICENSE:${PN}-ibt-hw-37-8 = "Firmware-ibt_firmware" +LICENSE:${PN}-ibt-11-5 = "Firmware-ibt_firmware" +LICENSE:${PN}-ibt-12-16 = "Firmware-ibt_firmware" +LICENSE:${PN}-ibt-17 = "Firmware-ibt_firmware" +LICENSE:${PN}-ibt-20 = "Firmware-ibt_firmware" +LICENSE:${PN}-ibt-misc = "Firmware-ibt_firmware" + +FILES:${PN}-ibt-license = "${nonarch_base_libdir}/firmware/LICENCE.ibt_firmware" +FILES:${PN}-ibt-hw-37-7 = "${nonarch_base_libdir}/firmware/intel/ibt-hw-37.7*.bseq" +FILES:${PN}-ibt-hw-37-8 = "${nonarch_base_libdir}/firmware/intel/ibt-hw-37.8*.bseq" +FILES:${PN}-ibt-11-5 = "${nonarch_base_libdir}/firmware/intel/ibt-11-5.sfi ${nonarch_base_libdir}/firmware/intel/ibt-11-5.ddc" +FILES:${PN}-ibt-12-16 = "${nonarch_base_libdir}/firmware/intel/ibt-12-16.sfi ${nonarch_base_libdir}/firmware/intel/ibt-12-16.ddc" +FILES:${PN}-ibt-17 = "${nonarch_base_libdir}/firmware/intel/ibt-17-*.sfi ${nonarch_base_libdir}/firmware/intel/ibt-17-*.ddc" +FILES:${PN}-ibt-20 = "${nonarch_base_libdir}/firmware/intel/ibt-20-*.sfi ${nonarch_base_libdir}/firmware/intel/ibt-20-*.ddc" +FILES:${PN}-ibt-misc = "${nonarch_base_libdir}/firmware/intel/ibt-*" + +RDEPENDS:${PN}-ibt-hw-37-7 = "${PN}-ibt-license" +RDEPENDS:${PN}-ibt-hw-37.8 = "${PN}-ibt-license" +RDEPENDS:${PN}-ibt-11-5 = "${PN}-ibt-license" +RDEPENDS:${PN}-ibt-12-16 = "${PN}-ibt-license" +RDEPENDS:${PN}-ibt-17 = "${PN}-ibt-license" +RDEPENDS:${PN}-ibt-20 = "${PN}-ibt-license" +RDEPENDS:${PN}-ibt-misc = "${PN}-ibt-license" + +ALLOW_EMPTY:${PN}-ibt= "1" +ALLOW_EMPTY:${PN}-ibt-misc = "1" + +LICENSE:${PN}-i915 = "Firmware-i915" +LICENSE:${PN}-i915-license = "Firmware-i915" +FILES:${PN}-i915-license = "${nonarch_base_libdir}/firmware/LICENSE.i915" +FILES:${PN}-i915 = "${nonarch_base_libdir}/firmware/i915" +RDEPENDS:${PN}-i915 = "${PN}-i915-license" + +# For ice-enhanced +LICENSE:${PN}-ice-enhanced = "Firmware-ice_enhanced" +LICENSE:${PN}-ice-enhanced-license = "Firmware-ice_enhanced" + +FILES:${PN}-ice-enhanced = " \ + ${nonarch_base_libdir}/firmware/intel/ice/ddp-comms/* \ + ${nonarch_base_libdir}/firmware/intel/ice/ddp-wireless_edge/* \ +" +FILES:${PN}-ice-enhanced-license = " \ + ${nonarch_base_libdir}/firmware/LICENSE.ice_enhanced \ +" +RDEPENDS:${PN}-ice-enhanced = "${PN}-ice-enhanced-license" + +LICENSE:${PN}-ice = "Firmware-ice" +LICENSE:${PN}-ice-license = "Firmware-ice" +FILES:${PN}-ice-license = "${nonarch_base_libdir}/firmware/LICENSE.ice" +FILES:${PN}-ice = " \ + ${nonarch_base_libdir}/firmware/intel/ice/ddp/* \ + ${nonarch_base_libdir}/firmware/intel/ice/ddp-lag/* \ +" +RDEPENDS:${PN}-ice = "${PN}-ice-license" + +FILES:${PN}-adsp-sst-license = "${nonarch_base_libdir}/firmware/LICENCE.adsp_sst" +LICENSE:${PN}-adsp-sst = "Firmware-adsp_sst" +LICENSE:${PN}-adsp-sst-license = "Firmware-adsp_sst" +FILES:${PN}-adsp-sst = "${nonarch_base_libdir}/firmware/intel/dsp_fw*" +RDEPENDS:${PN}-adsp-sst = "${PN}-adsp-sst-license" + +# For QAT +LICENSE:${PN}-qat = "Firmware-qat" +LICENSE:${PN}-qat-license = "Firmware-qat" +FILES:${PN}-qat-license = "${nonarch_base_libdir}/firmware/LICENCE.qat_firmware" +FILES:${PN}-qat = "${nonarch_base_libdir}/firmware/qat*.bin" +RDEPENDS:${PN}-qat = "${PN}-qat-license" + +LICENSE:${PN}-qed = "WHENCE" +FILES:${PN}-qed = "${nonarch_base_libdir}/firmware/qed/*" + +# For QCOM VPU/GPU and SDM845 +LICENSE:${PN}-qcom-license = "Firmware-qcom" +LICENSE:${PN}-qcom-yamato-license = "Firmware-qcom-yamato" +LICENSE:${PN}-qcom-venus-1.8 = "Firmware-qcom" +LICENSE:${PN}-qcom-venus-4.2 = "Firmware-qcom" +LICENSE:${PN}-qcom-venus-5.2 = "Firmware-qcom" +LICENSE:${PN}-qcom-venus-5.4 = "Firmware-qcom" +LICENSE:${PN}-qcom-venus-6.0 = "Firmware-qcom" +LICENSE:${PN}-qcom-vpu-1.0 = "Firmware-qcom" +LICENSE:${PN}-qcom-vpu-2.0 = "Firmware-qcom" +LICENSE:${PN}-qcom-adreno-a2xx = "Firmware-qcom Firmware-qcom-yamato" +LICENSE:${PN}-qcom-adreno-a3xx = "Firmware-qcom" +LICENSE:${PN}-qcom-adreno-a4xx = "Firmware-qcom" +LICENSE:${PN}-qcom-adreno-a530 = "Firmware-qcom" +LICENSE:${PN}-qcom-adreno-a630 = "Firmware-qcom" +LICENSE:${PN}-qcom-adreno-a650 = "Firmware-qcom" +LICENSE:${PN}-qcom-adreno-a660 = "Firmware-qcom" +LICENSE:${PN}-qcom-adreno-a702 = "Firmware-qcom" +LICENSE:${PN}-qcom-apq8016-modem = "Firmware-qcom" +LICENSE:${PN}-qcom-apq8016-wifi = "Firmware-qcom" +LICENSE:${PN}-qcom-apq8096-audio = "Firmware-qcom" +LICENSE:${PN}-qcom-apq8096-adreno = "Firmware-qcom" +LICENSE:${PN}-qcom-apq8096-modem = "Firmware-qcom" +LICENSE:${PN}-qcom-qcm2290-adreno = "Firmware-qcom" +LICENSE:${PN}-qcom-qcm2290-audio = "Firmware-qcom" +LICENSE:${PN}-qcom-qcm2290-modem = "Firmware-qcom" +LICENSE:${PN}-qcom-qcm2290-wifi = "Firmware-qcom" +LICENSE:${PN}-qcom-qrb4210-adreno = "Firmware-qcom" +LICENSE:${PN}-qcom-qrb4210-audio = "Firmware-qcom" +LICENSE:${PN}-qcom-qrb4210-compute = "Firmware-qcom" +LICENSE:${PN}-qcom-qrb4210-modem = "Firmware-qcom" +LICENSE:${PN}-qcom-qrb4210-wifi = "Firmware-qcom" +LICENSE:${PN}-qcom-sc8280xp-lenovo-x13s-audio = "Firmware-qcom & Firmware-linaro" +LICENSE:${PN}-qcom-sc8280xp-lenovo-x13s-adreno = "Firmware-qcom" +LICENSE:${PN}-qcom-sc8280xp-lenovo-x13s-compute = "Firmware-qcom" +LICENSE:${PN}-qcom-sc8280xp-lenovo-x13s-sensors = "Firmware-qcom" +LICENSE:${PN}-qcom-sdm845-audio = "Firmware-qcom" +LICENSE:${PN}-qcom-sdm845-adreno = "Firmware-qcom" +LICENSE:${PN}-qcom-sdm845-compute = "Firmware-qcom" +LICENSE:${PN}-qcom-sdm845-modem = "Firmware-qcom" +LICENSE:${PN}-qcom-sdm845-thundercomm-db845c-sensors = "Firmware-qcom" +LICENSE:${PN}-qcom-sm8250-audio = "Firmware-qcom" +LICENSE:${PN}-qcom-sm8250-adreno = "Firmware-qcom" +LICENSE:${PN}-qcom-sm8250-compute = "Firmware-qcom" +LICENSE:${PN}-qcom-sm8250-thundercomm-rb5-sensors = "Firmware-qcom" + +FILES:${PN}-qcom-license = "${nonarch_base_libdir}/firmware/LICENSE.qcom ${nonarch_base_libdir}/firmware/qcom/NOTICE.txt" +FILES:${PN}-qcom-yamato-license = "${nonarch_base_libdir}/firmware/LICENSE.qcom_yamato" +FILES:${PN}-qcom-venus-1.8 = "${nonarch_base_libdir}/firmware/qcom/venus-1.8/*" +FILES:${PN}-qcom-venus-4.2 = "${nonarch_base_libdir}/firmware/qcom/venus-4.2/*" +FILES:${PN}-qcom-venus-5.2 = "${nonarch_base_libdir}/firmware/qcom/venus-5.2/*" +FILES:${PN}-qcom-venus-5.4 = "${nonarch_base_libdir}/firmware/qcom/venus-5.4/*" +FILES:${PN}-qcom-venus-6.0 = "${nonarch_base_libdir}/firmware/qcom/venus-6.0/*" +FILES:${PN}-qcom-vpu-1.0 = "${nonarch_base_libdir}/firmware/qcom/vpu-1.0/*" +FILES:${PN}-qcom-vpu-2.0 = "${nonarch_base_libdir}/firmware/qcom/vpu-2.0/*" +FILES:${PN}-qcom-adreno-a2xx = "${nonarch_base_libdir}/firmware/qcom/leia_*.fw ${nonarch_base_libdir}/firmware/qcom/yamato_*.fw" +FILES:${PN}-qcom-adreno-a3xx = "${nonarch_base_libdir}/firmware/qcom/a3*_*.fw ${nonarch_base_libdir}/firmware/a300_*.fw" +FILES:${PN}-qcom-adreno-a4xx = "${nonarch_base_libdir}/firmware/qcom/a4*_*.fw" +FILES:${PN}-qcom-adreno-a530 = "${nonarch_base_libdir}/firmware/qcom/a530*.fw*" +FILES:${PN}-qcom-adreno-a630 = "${nonarch_base_libdir}/firmware/qcom/a630*.*" +FILES:${PN}-qcom-adreno-a650 = "${nonarch_base_libdir}/firmware/qcom/a650*.*" +FILES:${PN}-qcom-adreno-a660 = "${nonarch_base_libdir}/firmware/qcom/a660*.*" +FILES:${PN}-qcom-adreno-a702 = "${nonarch_base_libdir}/firmware/qcom/a702*.*" +FILES:${PN}-qcom-apq8016-modem = "${nonarch_base_libdir}/firmware/qcom/apq8016/mba.mbn ${nonarch_base_libdir}/firmware/qcom/apq8016/modem.mbn" +FILES:${PN}-qcom-apq8016-wifi = "${nonarch_base_libdir}/firmware/qcom/apq8016/wcnss.mbn ${nonarch_base_libdir}/firmware/qcom/apq8016/WCNSS*" +FILES:${PN}-qcom-apq8096-adreno = "${nonarch_base_libdir}/firmware/qcom/apq8096/a530_zap.mbn ${nonarch_base_libdir}/firmware/qcom/a530_zap.mdt" +FILES:${PN}-qcom-apq8096-audio = "${nonarch_base_libdir}/firmware/qcom/apq8096/adsp*.*" +FILES:${PN}-qcom-apq8096-modem = "${nonarch_base_libdir}/firmware/qcom/apq8096/mba.mbn ${nonarch_base_libdir}/firmware/qcom/apq8096/modem*.* ${nonarch_base_libdir}/firmware/qcom/apq8096/wlanmdsp.mbn" +FILES:${PN}-qcom-qcm2290-adreno = "${nonarch_base_libdir}/firmware/qcom/qcm2290/a702_zap.mbn" +FILES:${PN}-qcom-qcm2290-audio = "${nonarch_base_libdir}/firmware/qcom/qcm2290/adsp*.*" +FILES:${PN}-qcom-qcm2290-modem = "${nonarch_base_libdir}/firmware/qcom/qcm2290/modem*.*" +FILES:${PN}-qcom-qcm2290-wifi = "${nonarch_base_libdir}/firmware/qcom/qcm2290/wlanmdsp.mbn" +FILES:${PN}-qcom-qrb4210-adreno = "${nonarch_base_libdir}/firmware/qcom/qrb4210/a610_zap.mbn" +FILES:${PN}-qcom-qrb4210-audio = "${nonarch_base_libdir}/firmware/qcom/qrb4210/adsp*.*" +FILES:${PN}-qcom-qrb4210-compute = "${nonarch_base_libdir}/firmware/qcom/qrb4210/cdsp*.*" +FILES:${PN}-qcom-qrb4210-modem = "${nonarch_base_libdir}/firmware/qcom/qrb4210/modem*.*" +FILES:${PN}-qcom-qrb4210-wifi = "${nonarch_base_libdir}/firmware/qcom/qrb4210/wlanmdsp.mbn" +FILES:${PN}-qcom-sc8280xp-lenovo-x13s-compat = "${nonarch_base_libdir}/firmware/qcom/LENOVO/21BX" +FILES:${PN}-qcom-sc8280xp-lenovo-x13s-audio = "${nonarch_base_libdir}/firmware/qcom/sc8280xp/LENOVO/21BX/*adsp*.* ${nonarch_base_libdir}/firmware/qcom/sc8280xp/LENOVO/21BX/battmgr.jsn ${nonarch_base_libdir}/firmware/qcom/sc8280xp/LENOVO/21BX/audioreach-tplg.bin ${nonarch_base_libdir}/firmware/qcom/sc8280xp/SC8280XP-LENOVO-X13S-tplg.bin" +FILES:${PN}-qcom-sc8280xp-lenovo-x13s-adreno = "${nonarch_base_libdir}/firmware/qcom/sc8280xp/LENOVO/21BX/qcdxkmsuc8280.mbn" +FILES:${PN}-qcom-sc8280xp-lenovo-x13s-compute = "${nonarch_base_libdir}/firmware/qcom/sc8280xp/LENOVO/21BX/*cdsp*.*" +FILES:${PN}-qcom-sc8280xp-lenovo-x13s-sensors = "${nonarch_base_libdir}/firmware/qcom/sc8280xp/LENOVO/21BX/*slpi*.*" +FILES:${PN}-qcom-sdm845-adreno = "${nonarch_base_libdir}/firmware/qcom/sdm845/a630*.*" +FILES:${PN}-qcom-sdm845-audio = "${nonarch_base_libdir}/firmware/qcom/sdm845/adsp*.*" +FILES:${PN}-qcom-sdm845-compute = "${nonarch_base_libdir}/firmware/qcom/sdm845/cdsp*.*" +FILES:${PN}-qcom-sdm845-modem = "${nonarch_base_libdir}/firmware/qcom/sdm845/mba.mbn ${nonarch_base_libdir}/firmware/qcom/sdm845/modem*.* ${nonarch_base_libdir}/firmware/qcom/sdm845/wlanmdsp.mbn ${nonarch_base_libdir}/firmware/qcom/sdm845/notice.txt_wlanmdsp" +FILES:${PN}-qcom-sdm845-thundercomm-db845c-sensors = "${nonarch_base_libdir}/firmware/qcom/sdm845/Thundercomm/db845c/slpi*.*" +FILES:${PN}-qcom-sm8250-adreno = "${nonarch_base_libdir}/firmware/qcom/sm8250/a650*.*" +FILES:${PN}-qcom-sm8250-audio = "${nonarch_base_libdir}/firmware/qcom/sm8250/adsp*.*" +FILES:${PN}-qcom-sm8250-compute = "${nonarch_base_libdir}/firmware/qcom/sm8250/cdsp*.*" +FILES:${PN}-qcom-sm8250-thundercomm-rb5-sensors = "${nonarch_base_libdir}/firmware/qcom/sm8250/Thundercomm/RB5/slpi*.*" + +RDEPENDS:${PN}-qcom-venus-1.8 = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-venus-4.2 = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-venus-5.2 = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-venus-5.4 = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-venus-6.0 = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-vpu-1.0 = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-vpu-2.0 = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-adreno-a2xx = "${PN}-qcom-license ${PN}-qcom-yamato-license" +RDEPENDS:${PN}-qcom-adreno-a3xx = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-adreno-a4xx = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-adreno-a530 = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-adreno-a630 = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-adreno-a650 = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-adreno-a660 = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-adreno-a702 = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-apq8016-modem = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-apq8016-wifi = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-apq8096-adreno = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-apq8096-audio = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-apq8096-modem = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-qcm2290-adreno = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-qcm2290-audio = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-qcm2290-modem = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-qcm2290-wifi = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-qrb4210-adreno = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-qrb4210-audio = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-qrb4210-compute = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-qrb4210-modem = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-qrb4210-wifi = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-sc8280xp-lenovo-x13s-audio = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-sc8280xp-lenovo-x13s-adreno = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-sc8280xp-lenovo-x13s-compute = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-sc8280xp-lenovo-x13s-sensors = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-sdm845-adreno = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-sdm845-audio = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-sdm845-compute = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-sdm845-modem = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-sdm845-thundercomm-db845c-sensors = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-sm8250-adreno = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-sm8250-audio = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-sm8250-compute = "${PN}-qcom-license" +RDEPENDS:${PN}-qcom-sm8250-thundercomm-rb5-sensors = "${PN}-qcom-license" + +RRECOMMENDS:${PN}-qcom-sc8280xp-lenovo-x13s-audio = "${PN}-qcom-sc8280xp-lenovo-x13s-compat" +RRECOMMENDS:${PN}-qcom-sc8280xp-lenovo-x13s-adreno = "${PN}-qcom-sc8280xp-lenovo-x13s-compat" +RRECOMMENDS:${PN}-qcom-sc8280xp-lenovo-x13s-compute = "${PN}-qcom-sc8280xp-lenovo-x13s-compat" +RRECOMMENDS:${PN}-qcom-sc8280xp-lenovo-x13s-sensors = "${PN}-qcom-sc8280xp-lenovo-x13s-compat" + +LICENSE:${PN}-liquidui = "Firmware-cavium_liquidio" +FILES:${PN}-liquidio = "${nonarch_base_libdir}/firmware/liquidio" + +LICENSE:${PN}-mellanox = "WHENCE" +FILES:${PN}-mellanox = "${nonarch_base_libdir}/firmware/mellanox" + +LICENSE:${PN}-prestera = "Firmware-Marvell" +FILES:${PN}-prestera = "${nonarch_base_libdir}/firmware/mrvl/prestera" +RDEPENDS:${PN}-prestera = "${PN}-marvell-license" + +# For Rockchip +LICENSE:${PN}-rockchip-dptx = "Firmware-rockchip" +FILES:${PN}-rockchip-license = "${nonarch_base_libdir}/firmware/LICENCE.rockchip" +FILES:${PN}-rockchip-dptx = "${nonarch_base_libdir}/firmware/rockchip/dptx.bin" +RDEPENDS:${PN}-rockchip-dptx = "${PN}-rockchip-license" + +# For Amlogic VDEC +LICENSE:${PN}-amlogic-vdec = "Firmware-amlogic_vdec" +FILES:${PN}-amlogic-vdec-license = "${nonarch_base_libdir}/firmware/LICENSE.amlogic_vdec" +FILES:${PN}-amlogic-vdec = "${nonarch_base_libdir}/firmware/meson/vdec/*" +RDEPENDS:${PN}-amlogic-vdec = "${PN}-amlogic-vdec-license" + +# For other firmwares +# Maybe split out to separate packages when needed. +LICENSE:${PN} = "\ + Firmware-Abilis \ + & Firmware-agere \ + & Firmware-amdgpu \ + & Firmware-amd-ucode \ + & Firmware-amlogic_vdec \ + & Firmware-atmel \ + & Firmware-ca0132 \ + & Firmware-cavium \ + & Firmware-chelsio_firmware \ + & Firmware-cirrus \ + & Firmware-cnm \ + & Firmware-cw1200 \ + & Firmware-dib0700 \ + & Firmware-e100 \ + & Firmware-ene_firmware \ + & Firmware-fw_sst_0f28 \ + & Firmware-go7007 \ + & Firmware-hfi1_firmware \ + & Firmware-ibt_firmware \ + & Firmware-it913x \ + & Firmware-IntcSST2 \ + & Firmware-kaweth \ + & Firmware-moxa \ + & Firmware-myri10ge_firmware \ + & Firmware-nvidia \ + & Firmware-nxp \ + & Firmware-OLPC \ + & Firmware-ath9k-htc \ + & Firmware-phanfw \ + & Firmware-qat \ + & Firmware-qcom \ + & Firmware-qla1280 \ + & Firmware-qla2xxx \ + & Firmware-r8a779x_usb3 \ + & Firmware-radeon \ + & Firmware-ralink_a_mediatek_company_firmware \ + & Firmware-ralink-firmware \ + & Firmware-imx-sdma_firmware \ + & Firmware-siano \ + & Firmware-ti-connectivity \ + & Firmware-ti-keystone \ + & Firmware-ueagle-atm4-firmware \ + & Firmware-wl1251 \ + & Firmware-xc4000 \ + & Firmware-xc5000 \ + & Firmware-xc5000c \ + & WHENCE \ +" + +FILES:${PN}-license += "${nonarch_base_libdir}/firmware/LICEN*" +FILES:${PN} += "${nonarch_base_libdir}/firmware/*" +RDEPENDS:${PN} += "${PN}-license" +RDEPENDS:${PN} += "${PN}-whence-license" + +# Make linux-firmware depend on all of the split-out packages. +# Make linux-firmware-iwlwifi depend on all of the split-out iwlwifi packages. +# Make linux-firmware-ibt depend on all of the split-out ibt packages. +python populate_packages:prepend () { + firmware_pkgs = oe.utils.packages_filter_out_system(d) + d.appendVar('RRECOMMENDS:linux-firmware', ' ' + ' '.join(firmware_pkgs)) + + iwlwifi_pkgs = filter(lambda x: x.find('-iwlwifi-') != -1, firmware_pkgs) + d.appendVar('RRECOMMENDS:linux-firmware-iwlwifi', ' ' + ' '.join(iwlwifi_pkgs)) + + ibt_pkgs = filter(lambda x: x.find('-ibt-') != -1, firmware_pkgs) + d.appendVar('RRECOMMENDS:linux-firmware-ibt', ' ' + ' '.join(ibt_pkgs)) +} + +# Firmware files are generally not ran on the CPU, so they can be +# allarch despite being architecture specific +INSANE_SKIP = "arch" + +# Don't warn about already stripped files +INSANE_SKIP:${PN} = "already-stripped" + +# No need to put firmware into the sysroot +SYSROOT_DIRS_IGNORE += "${nonarch_base_libdir}/firmware" diff --git a/meta/recipes-kernel/linux-firmware/linux-firmware_git.bb b/meta/recipes-kernel/linux-firmware/linux-firmware_git.bb deleted file mode 100644 index 8b6ad96dba..0000000000 --- a/meta/recipes-kernel/linux-firmware/linux-firmware_git.bb +++ /dev/null @@ -1,939 +0,0 @@ -SUMMARY = "Firmware files for use with Linux kernel" -SECTION = "kernel" - -LICENSE = "\ - Firmware-Abilis \ - & Firmware-adsp_sst \ - & Firmware-agere \ - & Firmware-amdgpu \ - & Firmware-amd-ucode \ - & Firmware-amlogic_vdec \ - & Firmware-atheros_firmware \ - & Firmware-atmel \ - & Firmware-broadcom_bcm43xx \ - & Firmware-ca0132 \ - & Firmware-cavium \ - & Firmware-chelsio_firmware \ - & Firmware-cw1200 \ - & Firmware-cypress \ - & Firmware-dib0700 \ - & Firmware-e100 \ - & Firmware-ene_firmware \ - & Firmware-fw_sst_0f28 \ - & Firmware-go7007 \ - & Firmware-GPLv2 \ - & Firmware-hfi1_firmware \ - & Firmware-i2400m \ - & Firmware-i915 \ - & Firmware-ibt_firmware \ - & Firmware-it913x \ - & Firmware-iwlwifi_firmware \ - & Firmware-IntcSST2 \ - & Firmware-kaweth \ - & Firmware-Marvell \ - & Firmware-moxa \ - & Firmware-myri10ge_firmware \ - & Firmware-netronome \ - & Firmware-nvidia \ - & Firmware-OLPC \ - & Firmware-ath9k-htc \ - & Firmware-phanfw \ - & Firmware-qat \ - & Firmware-qcom \ - & Firmware-qla1280 \ - & Firmware-qla2xxx \ - & Firmware-qualcommAthos_ar3k \ - & Firmware-qualcommAthos_ath10k \ - & Firmware-r8a779x_usb3 \ - & Firmware-radeon \ - & Firmware-ralink_a_mediatek_company_firmware \ - & Firmware-ralink-firmware \ - & Firmware-rtlwifi_firmware \ - & Firmware-imx-sdma_firmware \ - & Firmware-siano \ - & Firmware-tda7706-firmware \ - & Firmware-ti-connectivity \ - & Firmware-ti-keystone \ - & Firmware-ueagle-atm4-firmware \ - & Firmware-via_vt6656 \ - & Firmware-wl1251 \ - & Firmware-xc4000 \ - & Firmware-xc5000 \ - & Firmware-xc5000c \ - & WHENCE \ -" - -LIC_FILES_CHKSUM = "file://LICENCE.Abilis;md5=b5ee3f410780e56711ad48eadc22b8bc \ - file://LICENCE.adsp_sst;md5=615c45b91a5a4a9fe046d6ab9a2df728 \ - file://LICENCE.agere;md5=af0133de6b4a9b2522defd5f188afd31 \ - file://LICENSE.amdgpu;md5=ab515ef6495ab5c5a3b08ab2db62df11 \ - file://LICENSE.amd-ucode;md5=3c5399dc9148d7f0e1f41e34b69cf14f \ - file://LICENSE.amlogic_vdec;md5=dc44f59bf64a81643e500ad3f39a468a \ - file://LICENCE.atheros_firmware;md5=30a14c7823beedac9fa39c64fdd01a13 \ - file://LICENSE.atmel;md5=aa74ac0c60595dee4d4e239107ea77a3 \ - file://LICENCE.broadcom_bcm43xx;md5=3160c14df7228891b868060e1951dfbc \ - file://LICENCE.ca0132;md5=209b33e66ee5be0461f13d31da392198 \ - file://LICENCE.cadence;md5=009f46816f6956cfb75ede13d3e1cee0 \ - file://LICENCE.cavium;md5=c37aaffb1ebe5939b2580d073a95daea \ - file://LICENCE.chelsio_firmware;md5=819aa8c3fa453f1b258ed8d168a9d903 \ - file://LICENCE.cw1200;md5=f0f770864e7a8444a5c5aa9d12a3a7ed \ - file://LICENCE.cypress;md5=48cd9436c763bf873961f9ed7b5c147b \ - file://LICENSE.dib0700;md5=f7411825c8a555a1a3e5eab9ca773431 \ - file://LICENCE.e100;md5=ec0f84136766df159a3ae6d02acdf5a8 \ - file://LICENCE.ene_firmware;md5=ed67f0f62f8f798130c296720b7d3921 \ - file://LICENCE.fw_sst_0f28;md5=6353931c988ad52818ae733ac61cd293 \ - file://LICENCE.go7007;md5=c0bb9f6aaaba55b0529ee9b30aa66beb \ - file://GPL-2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ - file://LICENSE.hfi1_firmware;md5=5e7b6e586ce7339d12689e49931ad444 \ - file://LICENCE.i2400m;md5=14b901969e23c41881327c0d9e4b7d36 \ - file://LICENSE.i915;md5=2b0b2e0d20984affd4490ba2cba02570 \ - file://LICENCE.ibt_firmware;md5=fdbee1ddfe0fb7ab0b2fcd6b454a366b \ - file://LICENCE.IntcSST2;md5=9e7d8bea77612d7cc7d9e9b54b623062 \ - file://LICENCE.it913x;md5=1fbf727bfb6a949810c4dbfa7e6ce4f8 \ - file://LICENCE.iwlwifi_firmware;md5=3fd842911ea93c29cd32679aa23e1c88 \ - file://LICENCE.kaweth;md5=b1d876e562f4b3b8d391ad8395dfe03f \ - file://LICENCE.Marvell;md5=9ddea1734a4baf3c78d845151f42a37a \ - file://LICENCE.mediatek;md5=7c1976b63217d76ce47d0a11d8a79cf2 \ - file://LICENCE.moxa;md5=1086614767d8ccf744a923289d3d4261 \ - file://LICENCE.myri10ge_firmware;md5=42e32fb89f6b959ca222e25ac8df8fed \ - file://LICENCE.Netronome;md5=4add08f2577086d44447996503cddf5f \ - file://LICENCE.nvidia;md5=4428a922ed3ba2ceec95f076a488ce07 \ - file://LICENCE.OLPC;md5=5b917f9d8c061991be4f6f5f108719cd \ - file://LICENCE.open-ath9k-htc-firmware;md5=1b33c9f4d17bc4d457bdb23727046837 \ - file://LICENCE.phanfw;md5=954dcec0e051f9409812b561ea743bfa \ - file://LICENCE.qat_firmware;md5=9e7d8bea77612d7cc7d9e9b54b623062 \ - file://LICENSE.qcom;md5=164e3362a538eb11d3ac51e8e134294b \ - file://LICENCE.qla1280;md5=d6895732e622d950609093223a2c4f5d \ - file://LICENCE.qla2xxx;md5=505855e921b75f1be4a437ad9b79dff0 \ - file://LICENSE.QualcommAtheros_ar3k;md5=b5fe244fb2b532311de1472a3bc06da5 \ - file://LICENSE.QualcommAtheros_ath10k;md5=cb42b686ee5f5cb890275e4321db60a8 \ - file://LICENCE.r8a779x_usb3;md5=4c1671656153025d7076105a5da7e498 \ - file://LICENSE.radeon;md5=68ec28bacb3613200bca44f404c69b16 \ - file://LICENCE.ralink_a_mediatek_company_firmware;md5=728f1a85fd53fd67fa8d7afb080bc435 \ - file://LICENCE.ralink-firmware.txt;md5=ab2c269277c45476fb449673911a2dfd \ - file://LICENCE.rtlwifi_firmware.txt;md5=00d06cfd3eddd5a2698948ead2ad54a5 \ - file://LICENSE.sdma_firmware;md5=51e8c19ecc2270f4b8ea30341ad63ce9 \ - file://LICENCE.siano;md5=4556c1bf830067f12ca151ad953ec2a5 \ - file://LICENCE.tda7706-firmware.txt;md5=835997cf5e3c131d0dddd695c7d9103e \ - file://LICENCE.ti-connectivity;md5=c5e02be633f1499c109d1652514d85ec \ - file://LICENCE.ti-keystone;md5=3a86335d32864b0bef996bee26cc0f2c \ - file://LICENCE.ueagle-atm4-firmware;md5=4ed7ea6b507ccc583b9d594417714118 \ - file://LICENCE.via_vt6656;md5=e4159694cba42d4377a912e78a6e850f \ - file://LICENCE.wl1251;md5=ad3f81922bb9e197014bb187289d3b5b \ - file://LICENCE.xc4000;md5=0ff51d2dc49fce04814c9155081092f0 \ - file://LICENCE.xc5000;md5=1e170c13175323c32c7f4d0998d53f66 \ - file://LICENCE.xc5000c;md5=12b02efa3049db65d524aeb418dd87ca \ - file://WHENCE;md5=b6e44adf71bc37e5f26ebfe5a08b5490 \ - " - -# These are not common licenses, set NO_GENERIC_LICENSE for them -# so that the license files will be copied from fetched source -NO_GENERIC_LICENSE[Firmware-Abilis] = "LICENCE.Abilis" -NO_GENERIC_LICENSE[Firmware-adsp_sst] = "LICENCE.adsp_sst" -NO_GENERIC_LICENSE[Firmware-agere] = "LICENCE.agere" -NO_GENERIC_LICENSE[Firmware-amdgpu] = "LICENSE.amdgpu" -NO_GENERIC_LICENSE[Firmware-amd-ucode] = "LICENSE.amd-ucode" -NO_GENERIC_LICENSE[Firmware-amlogic_vdec] = "LICENSE.amlogic_vdec" -NO_GENERIC_LICENSE[Firmware-atheros_firmware] = "LICENCE.atheros_firmware" -NO_GENERIC_LICENSE[Firmware-atmel] = "LICENSE.atmel" -NO_GENERIC_LICENSE[Firmware-broadcom_bcm43xx] = "LICENCE.broadcom_bcm43xx" -NO_GENERIC_LICENSE[Firmware-ca0132] = "LICENCE.ca0132" -NO_GENERIC_LICENSE[Firmware-cadence] = "LICENCE.cadence" -NO_GENERIC_LICENSE[Firmware-cavium] = "LICENCE.cavium" -NO_GENERIC_LICENSE[Firmware-chelsio_firmware] = "LICENCE.chelsio_firmware" -NO_GENERIC_LICENSE[Firmware-cw1200] = "LICENCE.cw1200" -NO_GENERIC_LICENSE[Firmware-cypress] = "LICENCE.cypress" -NO_GENERIC_LICENSE[Firmware-dib0700] = "LICENSE.dib0700" -NO_GENERIC_LICENSE[Firmware-e100] = "LICENCE.e100" -NO_GENERIC_LICENSE[Firmware-ene_firmware] = "LICENCE.ene_firmware" -NO_GENERIC_LICENSE[Firmware-fw_sst_0f28] = "LICENCE.fw_sst_0f28" -NO_GENERIC_LICENSE[Firmware-go7007] = "LICENCE.go7007" -NO_GENERIC_LICENSE[Firmware-GPLv2] = "GPL-2" -NO_GENERIC_LICENSE[Firmware-hfi1_firmware] = "LICENSE.hfi1_firmware" -NO_GENERIC_LICENSE[Firmware-i2400m] = "LICENCE.i2400m" -NO_GENERIC_LICENSE[Firmware-i915] = "LICENSE.i915" -NO_GENERIC_LICENSE[Firmware-ibt_firmware] = "LICENCE.ibt_firmware" -NO_GENERIC_LICENSE[Firmware-IntcSST2] = "LICENCE.IntcSST2" -NO_GENERIC_LICENSE[Firmware-it913x] = "LICENCE.it913x" -NO_GENERIC_LICENSE[Firmware-iwlwifi_firmware] = "LICENCE.iwlwifi_firmware" -NO_GENERIC_LICENSE[Firmware-kaweth] = "LICENCE.kaweth" -NO_GENERIC_LICENSE[Firmware-Marvell] = "LICENCE.Marvell" -NO_GENERIC_LICENSE[Firmware-mediatek] = "LICENCE.mediatek" -NO_GENERIC_LICENSE[Firmware-moxa] = "LICENCE.moxa" -NO_GENERIC_LICENSE[Firmware-myri10ge_firmware] = "LICENCE.myri10ge_firmware" -NO_GENERIC_LICENSE[Firmware-netronome] = "LICENCE.Netronome" -NO_GENERIC_LICENSE[Firmware-nvidia] = "LICENCE.nvidia" -NO_GENERIC_LICENSE[Firmware-OLPC] = "LICENCE.OLPC" -NO_GENERIC_LICENSE[Firmware-ath9k-htc] = "LICENCE.open-ath9k-htc-firmware" -NO_GENERIC_LICENSE[Firmware-phanfw] = "LICENCE.phanfw" -NO_GENERIC_LICENSE[Firmware-qat] = "LICENCE.qat_firmware" -NO_GENERIC_LICENSE[Firmware-qcom] = "LICENSE.qcom" -NO_GENERIC_LICENSE[Firmware-qla1280] = "LICENCE.qla1280" -NO_GENERIC_LICENSE[Firmware-qla2xxx] = "LICENCE.qla2xxx" -NO_GENERIC_LICENSE[Firmware-qualcommAthos_ar3k] = "LICENSE.QualcommAtheros_ar3k" -NO_GENERIC_LICENSE[Firmware-qualcommAthos_ath10k] = "LICENSE.QualcommAtheros_ath10k" -NO_GENERIC_LICENSE[Firmware-r8a779x_usb3] = "LICENCE.r8a779x_usb3" -NO_GENERIC_LICENSE[Firmware-radeon] = "LICENSE.radeon" -NO_GENERIC_LICENSE[Firmware-ralink_a_mediatek_company_firmware] = "LICENCE.ralink_a_mediatek_company_firmware" -NO_GENERIC_LICENSE[Firmware-ralink-firmware] = "LICENCE.ralink-firmware.txt" -NO_GENERIC_LICENSE[Firmware-rtlwifi_firmware] = "LICENCE.rtlwifi_firmware.txt" -NO_GENERIC_LICENSE[Firmware-siano] = "LICENCE.siano" -NO_GENERIC_LICENSE[Firmware-imx-sdma_firmware] = "LICENSE.sdma_firmware" -NO_GENERIC_LICENSE[Firmware-tda7706-firmware] = "LICENCE.tda7706-firmware.txt" -NO_GENERIC_LICENSE[Firmware-ti-connectivity] = "LICENCE.ti-connectivity" -NO_GENERIC_LICENSE[Firmware-ti-keystone] = "LICENCE.ti-keystone" -NO_GENERIC_LICENSE[Firmware-ueagle-atm4-firmware] = "LICENCE.ueagle-atm4-firmware" -NO_GENERIC_LICENSE[Firmware-via_vt6656] = "LICENCE.via_vt6656" -NO_GENERIC_LICENSE[Firmware-wl1251] = "LICENCE.wl1251" -NO_GENERIC_LICENSE[Firmware-xc4000] = "LICENCE.xc4000" -NO_GENERIC_LICENSE[Firmware-xc5000] = "LICENCE.xc5000" -NO_GENERIC_LICENSE[Firmware-xc5000c] = "LICENCE.xc5000c" -NO_GENERIC_LICENSE[WHENCE] = "WHENCE" - -SRCREV = "711d3297bac870af42088a467459a0634c1970ca" -PE = "1" -PV = "0.0+git${SRCPV}" - -SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git" - -UPSTREAM_CHECK_COMMITS = "1" - -S = "${WORKDIR}/git" - -inherit allarch - -CLEANBROKEN = "1" - -do_compile() { - : -} - -do_install() { - install -d ${D}${nonarch_base_libdir}/firmware/ - cp -r * ${D}${nonarch_base_libdir}/firmware/ - - # Avoid Makefile to be deployed - rm ${D}${nonarch_base_libdir}/firmware/Makefile - - # Remove unbuild firmware which needs cmake and bash - rm ${D}${nonarch_base_libdir}/firmware/carl9170fw -rf - - # Remove pointless bash script - rm ${D}${nonarch_base_libdir}/firmware/configure - - # Remove python script used to check the WHENCE file - rm ${D}${nonarch_base_libdir}/firmware/check_whence.py - - # Libertas sd8686 - ln -sf libertas/sd8686_v9.bin ${D}${nonarch_base_libdir}/firmware/sd8686.bin - ln -sf libertas/sd8686_v9_helper.bin ${D}${nonarch_base_libdir}/firmware/sd8686_helper.bin - - # fixup wl12xx location, after 2.6.37 the kernel searches a different location for it - ( cd ${D}${nonarch_base_libdir}/firmware ; ln -sf ti-connectivity/* . ) -} - - -PACKAGES =+ "${PN}-ralink-license ${PN}-ralink \ - ${PN}-mt7601u-license ${PN}-mt7601u \ - ${PN}-radeon-license ${PN}-radeon \ - ${PN}-marvell-license ${PN}-pcie8897 ${PN}-pcie8997 \ - ${PN}-sd8686 ${PN}-sd8688 ${PN}-sd8787 ${PN}-sd8797 ${PN}-sd8801 ${PN}-sd8887 ${PN}-sd8897 \ - ${PN}-usb8997 \ - ${PN}-ti-connectivity-license ${PN}-wlcommon ${PN}-wl12xx ${PN}-wl18xx \ - ${PN}-vt6656-license ${PN}-vt6656 \ - ${PN}-rtl-license ${PN}-rtl8188 ${PN}-rtl8192cu ${PN}-rtl8192ce ${PN}-rtl8192su ${PN}-rtl8723 ${PN}-rtl8821 \ - ${PN}-rtl8168 \ - ${PN}-cypress-license \ - ${PN}-broadcom-license \ - ${PN}-bcm-0bb4-0306 \ - ${PN}-bcm43143 \ - ${PN}-bcm43236b \ - ${PN}-bcm43241b0 \ - ${PN}-bcm43241b4 \ - ${PN}-bcm43241b5 \ - ${PN}-bcm43242a \ - ${PN}-bcm4329 \ - ${PN}-bcm4329-fullmac \ - ${PN}-bcm4330 \ - ${PN}-bcm4334 \ - ${PN}-bcm43340 \ - ${PN}-bcm4335 \ - ${PN}-bcm43362 \ - ${PN}-bcm4339 \ - ${PN}-bcm43430 \ - ${PN}-bcm43430a0 \ - ${PN}-bcm43455 \ - ${PN}-bcm4350 \ - ${PN}-bcm4350c2 \ - ${PN}-bcm4354 \ - ${PN}-bcm4356 \ - ${PN}-bcm4356-pcie \ - ${PN}-bcm43569 \ - ${PN}-bcm43570 \ - ${PN}-bcm4358 \ - ${PN}-bcm43602 \ - ${PN}-bcm4366b \ - ${PN}-bcm4371 \ - ${PN}-bcm4373 \ - ${PN}-bcm43xx \ - ${PN}-bcm43xx-hdr \ - ${PN}-atheros-license ${PN}-ar9170 ${PN}-ath6k ${PN}-ath9k \ - ${PN}-gplv2-license ${PN}-carl9170 \ - ${PN}-ar3k-license ${PN}-ar3k ${PN}-ath10k-license ${PN}-ath10k ${PN}-qca \ - \ - ${PN}-imx-sdma-license ${PN}-imx-sdma-imx6q ${PN}-imx-sdma-imx7d \ - \ - ${PN}-iwlwifi-license ${PN}-iwlwifi \ - ${PN}-iwlwifi-135-6 \ - ${PN}-iwlwifi-3160-7 ${PN}-iwlwifi-3160-8 ${PN}-iwlwifi-3160-9 \ - ${PN}-iwlwifi-3160-10 ${PN}-iwlwifi-3160-12 ${PN}-iwlwifi-3160-13 \ - ${PN}-iwlwifi-3160-16 ${PN}-iwlwifi-3160-17 \ - ${PN}-iwlwifi-6000-4 ${PN}-iwlwifi-6000g2a-5 ${PN}-iwlwifi-6000g2a-6 \ - ${PN}-iwlwifi-6000g2b-5 ${PN}-iwlwifi-6000g2b-6 \ - ${PN}-iwlwifi-6050-4 ${PN}-iwlwifi-6050-5 \ - ${PN}-iwlwifi-7260 \ - ${PN}-iwlwifi-7265 \ - ${PN}-iwlwifi-7265d ${PN}-iwlwifi-8000c ${PN}-iwlwifi-8265 \ - ${PN}-iwlwifi-9000 \ - ${PN}-iwlwifi-misc \ - ${PN}-ibt-license ${PN}-ibt ${PN}-ibt-misc \ - ${PN}-ibt-11-5 ${PN}-ibt-12-16 ${PN}-ibt-hw-37-7 ${PN}-ibt-hw-37-8 \ - ${PN}-ibt-17 \ - ${PN}-i915-license ${PN}-i915 \ - ${PN}-adsp-sst-license ${PN}-adsp-sst \ - ${PN}-bnx2-mips \ - ${PN}-liquidio \ - ${PN}-netronome-license ${PN}-netronome \ - ${PN}-qat ${PN}-qat-license \ - ${PN}-qcom-license \ - ${PN}-qcom-venus-1.8 ${PN}-qcom-venus-4.2 \ - ${PN}-qcom-adreno-a3xx ${PN}-qcom-adreno-a530 \ - ${PN}-whence-license \ - ${PN}-license \ - " - -# For atheros -LICENSE_${PN}-ar9170 = "Firmware-atheros_firmware" -LICENSE_${PN}-ath6k = "Firmware-atheros_firmware" -LICENSE_${PN}-ath9k = "Firmware-atheros_firmware" -LICENSE_${PN}-atheros-license = "Firmware-atheros_firmware" - -FILES_${PN}-atheros-license = "${nonarch_base_libdir}/firmware/LICENCE.atheros_firmware" -FILES_${PN}-ar9170 = " \ - ${nonarch_base_libdir}/firmware/ar9170*.fw \ -" -FILES_${PN}-ath6k = " \ - ${nonarch_base_libdir}/firmware/ath6k \ -" -FILES_${PN}-ath9k = " \ - ${nonarch_base_libdir}/firmware/ar9271.fw \ - ${nonarch_base_libdir}/firmware/ar7010*.fw \ - ${nonarch_base_libdir}/firmware/htc_9271.fw \ - ${nonarch_base_libdir}/firmware/htc_7010.fw \ - ${nonarch_base_libdir}/firmware/ath9k_htc/htc_7010-1.4.0.fw \ - ${nonarch_base_libdir}/firmware/ath9k_htc/htc_9271-1.4.0.fw \ -" - -RDEPENDS_${PN}-ar9170 += "${PN}-atheros-license" -RDEPENDS_${PN}-ath6k += "${PN}-atheros-license" -RDEPENDS_${PN}-ath9k += "${PN}-atheros-license" - -# For carl9170 -LICENSE_${PN}-carl9170 = "Firmware-GPLv2" -LICENSE_${PN}-gplv2-license = "Firmware-GPLv2" - -FILES_${PN}-gplv2-license = "${nonarch_base_libdir}/firmware/GPL-2" -FILES_${PN}-carl9170 = " \ - ${nonarch_base_libdir}/firmware/carl9170*.fw \ -" - -RDEPENDS_${PN}-carl9170 += "${PN}-gplv2-license" - -# For QualCommAthos -LICENSE_${PN}-ar3k = "Firmware-qualcommAthos_ar3k" -LICENSE_${PN}-ar3k-license = "Firmware-qualcommAthos_ar3k" -LICENSE_${PN}-ath10k = "Firmware-qualcommAthos_ath10k" -LICENSE_${PN}-ath10k-license = "Firmware-qualcommAthos_ath10k" -LICENSE_${PN}-qca = "Firmware-qualcommAthos_ath10k" - -FILES_${PN}-ar3k-license = "${nonarch_base_libdir}/firmware/LICENSE.QualcommAtheros_ar3k" -FILES_${PN}-ar3k = " \ - ${nonarch_base_libdir}/firmware/ar3k \ -" - -FILES_${PN}-ath10k-license = "${nonarch_base_libdir}/firmware/LICENSE.QualcommAtheros_ath10k" -FILES_${PN}-ath10k = " \ - ${nonarch_base_libdir}/firmware/ath10k \ -" - -FILES_${PN}-qca = " \ - ${nonarch_base_libdir}/firmware/qca \ -" - -RDEPENDS_${PN}-ar3k += "${PN}-ar3k-license" -RDEPENDS_${PN}-ath10k += "${PN}-ath10k-license" -RDEPENDS_${PN}-qca += "${PN}-ath10k-license" - -# For ralink -LICENSE_${PN}-ralink = "Firmware-ralink-firmware" -LICENSE_${PN}-ralink-license = "Firmware-ralink-firmware" - -FILES_${PN}-ralink-license = "${nonarch_base_libdir}/firmware/LICENCE.ralink-firmware.txt" -FILES_${PN}-ralink = " \ - ${nonarch_base_libdir}/firmware/rt*.bin \ -" - -RDEPENDS_${PN}-ralink += "${PN}-ralink-license" - -# For mediatek MT7601U -LICENSE_${PN}-mt7601u = "Firmware-ralink_a_mediatek_company_firmware" -LICENSE_${PN}-mt7601u-license = "Firmware-ralink_a_mediatek_company_firmware" - -FILES_${PN}-mt7601u-license = "${nonarch_base_libdir}/firmware/LICENCE.ralink_a_mediatek_company_firmware" -FILES_${PN}-mt7601u = " \ - ${nonarch_base_libdir}/firmware/mt7601u.bin \ -" - -RDEPENDS_${PN}-mt7601u += "${PN}-mt7601u-license" - -# For radeon -LICENSE_${PN}-radeon = "Firmware-radeon" -LICENSE_${PN}-radeon-license = "Firmware-radeon" - -FILES_${PN}-radeon-license = "${nonarch_base_libdir}/firmware/LICENSE.radeon" -FILES_${PN}-radeon = " \ - ${nonarch_base_libdir}/firmware/radeon \ -" - -RDEPENDS_${PN}-radeon += "${PN}-radeon-license" - -# For marvell -LICENSE_${PN}-pcie8897 = "Firmware-Marvell" -LICENSE_${PN}-pcie8997 = "Firmware-Marvell" -LICENSE_${PN}-sd8686 = "Firmware-Marvell" -LICENSE_${PN}-sd8688 = "Firmware-Marvell" -LICENSE_${PN}-sd8787 = "Firmware-Marvell" -LICENSE_${PN}-sd8797 = "Firmware-Marvell" -LICENSE_${PN}-sd8801 = "Firmware-Marvell" -LICENSE_${PN}-sd8887 = "Firmware-Marvell" -LICENSE_${PN}-sd8897 = "Firmware-Marvell" -LICENSE_${PN}-usb8997 = "Firmware-Marvell" -LICENSE_${PN}-marvell-license = "Firmware-Marvell" - -FILES_${PN}-marvell-license = "${nonarch_base_libdir}/firmware/LICENCE.Marvell" -FILES_${PN}-pcie8897 = " \ - ${nonarch_base_libdir}/firmware/mrvl/pcie8897_uapsta.bin \ -" -FILES_${PN}-pcie8997 = " \ - ${nonarch_base_libdir}/firmware/mrvl/pcie8997_wlan_v4.bin \ - ${nonarch_base_libdir}/firmware/mrvl/pcieuart8997_combo_v4.bin \ - ${nonarch_base_libdir}/firmware/mrvl/pcieusb8997_combo_v4.bin \ -" -FILES_${PN}-sd8686 = " \ - ${nonarch_base_libdir}/firmware/libertas/sd8686_v9* \ - ${nonarch_base_libdir}/firmware/sd8686* \ -" -FILES_${PN}-sd8688 = " \ - ${nonarch_base_libdir}/firmware/libertas/sd8688* \ - ${nonarch_base_libdir}/firmware/mrvl/sd8688* \ -" -FILES_${PN}-sd8787 = " \ - ${nonarch_base_libdir}/firmware/mrvl/sd8787_uapsta.bin \ -" -FILES_${PN}-sd8797 = " \ - ${nonarch_base_libdir}/firmware/mrvl/sd8797_uapsta.bin \ -" -FILES_${PN}-sd8801 = " \ - ${nonarch_base_libdir}/firmware/mrvl/sd8801_uapsta.bin \ -" -FILES_${PN}-sd8887 = " \ - ${nonarch_base_libdir}/firmware/mrvl/sd8887_uapsta.bin \ -" -FILES_${PN}-sd8897 = " \ - ${nonarch_base_libdir}/firmware/mrvl/sd8897_uapsta.bin \ -" -FILES_${PN}-usb8997 = " \ - ${nonarch_base_libdir}/firmware/mrvl/usbusb8997_combo_v4.bin \ -" - -RDEPENDS_${PN}-sd8686 += "${PN}-marvell-license" -RDEPENDS_${PN}-sd8688 += "${PN}-marvell-license" -RDEPENDS_${PN}-sd8787 += "${PN}-marvell-license" -RDEPENDS_${PN}-sd8797 += "${PN}-marvell-license" -RDEPENDS_${PN}-sd8801 += "${PN}-marvell-license" -RDEPENDS_${PN}-sd8887 += "${PN}-marvell-license" -RDEPENDS_${PN}-sd8897 += "${PN}-marvell-license" -RDEPENDS_${PN}-usb8997 += "${PN}-marvell-license" - -# For netronome -LICENSE_${PN}-netronome = "Firmware-netronome" - -FILES_${PN}-netronome-license = " \ - ${nonarch_base_libdir}/firmware/LICENCE.Netronome \ -" -FILES_${PN}-netronome = " \ - ${nonarch_base_libdir}/firmware/netronome/nic_AMDA0081*.nffw \ - ${nonarch_base_libdir}/firmware/netronome/nic_AMDA0096*.nffw \ - ${nonarch_base_libdir}/firmware/netronome/nic_AMDA0097*.nffw \ - ${nonarch_base_libdir}/firmware/netronome/nic_AMDA0099*.nffw \ -" - -RDEPENDS_${PN}-netronome += "${PN}-netronome-license" - -# For rtl -LICENSE_${PN}-rtl8188 = "Firmware-rtlwifi_firmware" -LICENSE_${PN}-rtl8192cu = "Firmware-rtlwifi_firmware" -LICENSE_${PN}-rtl8192ce = "Firmware-rtlwifi_firmware" -LICENSE_${PN}-rtl8192su = "Firmware-rtlwifi_firmware" -LICENSE_${PN}-rtl8723 = "Firmware-rtlwifi_firmware" -LICENSE_${PN}-rtl8821 = "Firmware-rtlwifi_firmware" -LICENSE_${PN}-rtl-license = "Firmware-rtlwifi_firmware" -LICENSE_${PN}-rtl8168 = "WHENCE" - -FILES_${PN}-rtl-license = " \ - ${nonarch_base_libdir}/firmware/LICENCE.rtlwifi_firmware.txt \ -" -FILES_${PN}-rtl8188 = " \ - ${nonarch_base_libdir}/firmware/rtlwifi/rtl8188*.bin \ -" -FILES_${PN}-rtl8192cu = " \ - ${nonarch_base_libdir}/firmware/rtlwifi/rtl8192cufw*.bin \ -" -FILES_${PN}-rtl8192ce = " \ - ${nonarch_base_libdir}/firmware/rtlwifi/rtl8192cfw*.bin \ -" -FILES_${PN}-rtl8192su = " \ - ${nonarch_base_libdir}/firmware/rtlwifi/rtl8712u.bin \ -" -FILES_${PN}-rtl8723 = " \ - ${nonarch_base_libdir}/firmware/rtlwifi/rtl8723*.bin \ -" -FILES_${PN}-rtl8821 = " \ - ${nonarch_base_libdir}/firmware/rtlwifi/rtl8821*.bin \ -" -FILES_${PN}-rtl8168 = " \ - ${nonarch_base_libdir}/firmware/rtl_nic/rtl8168*.fw \ -" - -RDEPENDS_${PN}-rtl8188 += "${PN}-rtl-license" -RDEPENDS_${PN}-rtl8192ce += "${PN}-rtl-license" -RDEPENDS_${PN}-rtl8192cu += "${PN}-rtl-license" -RDEPENDS_${PN}-rtl8192su = "${PN}-rtl-license" -RDEPENDS_${PN}-rtl8723 += "${PN}-rtl-license" -RDEPENDS_${PN}-rtl8821 += "${PN}-rtl-license" -RDEPENDS_${PN}-rtl8168 += "${PN}-whence-license" - -# For ti-connectivity -LICENSE_${PN}-wlcommon = "Firmware-ti-connectivity" -LICENSE_${PN}-wl12xx = "Firmware-ti-connectivity" -LICENSE_${PN}-wl18xx = "Firmware-ti-connectivity" -LICENSE_${PN}-ti-connectivity-license = "Firmware-ti-connectivity" - -FILES_${PN}-ti-connectivity-license = "${nonarch_base_libdir}/firmware/LICENCE.ti-connectivity" -FILES_${PN}-wlcommon = " \ - ${nonarch_base_libdir}/firmware/TI* \ - ${nonarch_base_libdir}/firmware/ti-connectivity/TI* \ -" -FILES_${PN}-wl12xx = " \ - ${nonarch_base_libdir}/firmware/wl12* \ - ${nonarch_base_libdir}/firmware/ti-connectivity/wl12* \ -" -FILES_${PN}-wl18xx = " \ - ${nonarch_base_libdir}/firmware/wl18* \ - ${nonarch_base_libdir}/firmware/ti-connectivity/wl18* \ -" - -RDEPENDS_${PN}-wl12xx = "${PN}-ti-connectivity-license ${PN}-wlcommon" -RDEPENDS_${PN}-wl18xx = "${PN}-ti-connectivity-license ${PN}-wlcommon" - -# For vt6656 -LICENSE_${PN}-vt6656 = "Firmware-via_vt6656" -LICENSE_${PN}-vt6656-license = "Firmware-via_vt6656" - -FILES_${PN}-vt6656-license = "${nonarch_base_libdir}/firmware/LICENCE.via_vt6656" -FILES_${PN}-vt6656 = " \ - ${nonarch_base_libdir}/firmware/vntwusb.fw \ -" - -RDEPENDS_${PN}-vt6656 = "${PN}-vt6656-license" - -# For broadcom - -# for i in `grep brcm WHENCE | grep ^File | sed 's/File: brcm.//g'`; do pkg=`echo $i | sed 's/-[sp40].*//g; s/\.bin//g; s/brcmfmac/bcm/g; s/_hdr/-hdr/g; s/BCM/bcm-0bb4-0306/g'`; echo -e " \${PN}-$pkg \\"; done | sort -u - -LICENSE_${PN}-broadcom-license = "Firmware-broadcom_bcm43xx" -FILES_${PN}-broadcom-license = "${nonarch_base_libdir}/firmware/LICENCE.broadcom_bcm43xx" - -# for i in `grep brcm WHENCE | grep ^File | sed 's/File: brcm.//g'`; do pkg=`echo $i | sed 's/-[sp40].*//g; s/\.bin//g; s/brcmfmac/bcm/g; s/_hdr/-hdr/g; s/BCM/bcm-0bb4-0306/g'`; echo "$i - $pkg"; echo -e "FILES_\${PN}-$pkg = \"\${nonarch_base_libdir}/firmware/brcm/$i\""; done | grep ^FILES - -FILES_${PN}-bcm43xx = "${nonarch_base_libdir}/firmware/brcm/bcm43xx-0.fw" -FILES_${PN}-bcm43xx-hdr = "${nonarch_base_libdir}/firmware/brcm/bcm43xx_hdr-0.fw" -FILES_${PN}-bcm4329-fullmac = "${nonarch_base_libdir}/firmware/brcm/bcm4329-fullmac-4.bin" -FILES_${PN}-bcm43236b = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43236b.bin" -FILES_${PN}-bcm4329 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4329-sdio.bin" -FILES_${PN}-bcm4330 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4330-sdio.bin" -FILES_${PN}-bcm4334 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4334-sdio.bin" -FILES_${PN}-bcm4335 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4335-sdio.bin" -FILES_${PN}-bcm4339 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4339-sdio.bin" -FILES_${PN}-bcm43241b0 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43241b0-sdio.bin" -FILES_${PN}-bcm43241b4 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43241b4-sdio.bin" -FILES_${PN}-bcm43241b5 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43241b5-sdio.bin" -FILES_${PN}-bcm43242a = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43242a.bin" -FILES_${PN}-bcm43143 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43143.bin \ - ${nonarch_base_libdir}/firmware/brcm/brcmfmac43143-sdio.bin \ -" -FILES_${PN}-bcm43430a0 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43430a0-sdio.bin" -FILES_${PN}-bcm43455 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43455-sdio.bin" -FILES_${PN}-bcm4350c2 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4350c2-pcie.bin" -FILES_${PN}-bcm4350 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4350-pcie.bin" -FILES_${PN}-bcm4356 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4356-sdio.bin" -FILES_${PN}-bcm43569 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43569.bin" -FILES_${PN}-bcm43570 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43570-pcie.bin" -FILES_${PN}-bcm4358 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4358-pcie.bin" -FILES_${PN}-bcm43602 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43602-pcie.bin \ - ${nonarch_base_libdir}/firmware/brcm/brcmfmac43602-pcie.ap.bin \ -" -FILES_${PN}-bcm4366b = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4366b-pcie.bin" -FILES_${PN}-bcm4371 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4371-pcie.bin" - -# for i in `grep brcm WHENCE | grep ^File | sed 's/File: brcm.//g'`; do pkg=`echo $i | sed 's/-[sp40].*//g; s/\.bin//g; s/brcmfmac/bcm/g; s/_hdr/-hdr/g; s/BCM/bcm-0bb4-0306/g'`; echo -e "LICENSE_\${PN}-$pkg = \"Firmware-broadcom_bcm43xx\"\nRDEPENDS_\${PN}-$pkg += \"\${PN}-broadcom-license\""; done -# Currently 1st one and last 6 have cypress LICENSE - -LICENSE_${PN}-bcm43xx = "Firmware-broadcom_bcm43xx" -RDEPENDS_${PN}-bcm43xx += "${PN}-broadcom-license" -LICENSE_${PN}-bcm43xx-hdr = "Firmware-broadcom_bcm43xx" -RDEPENDS_${PN}-bcm43xx-hdr += "${PN}-broadcom-license" -LICENSE_${PN}-bcm4329-fullmac = "Firmware-broadcom_bcm43xx" -RDEPENDS_${PN}-bcm4329-fullmac += "${PN}-broadcom-license" -LICENSE_${PN}-bcm43236b = "Firmware-broadcom_bcm43xx" -RDEPENDS_${PN}-bcm43236b += "${PN}-broadcom-license" -LICENSE_${PN}-bcm4329 = "Firmware-broadcom_bcm43xx" -RDEPENDS_${PN}-bcm4329 += "${PN}-broadcom-license" -LICENSE_${PN}-bcm4330 = "Firmware-broadcom_bcm43xx" -RDEPENDS_${PN}-bcm4330 += "${PN}-broadcom-license" -LICENSE_${PN}-bcm4334 = "Firmware-broadcom_bcm43xx" -RDEPENDS_${PN}-bcm4334 += "${PN}-broadcom-license" -LICENSE_${PN}-bcm4335 = "Firmware-broadcom_bcm43xx" -RDEPENDS_${PN}-bcm4335 += "${PN}-broadcom-license" -LICENSE_${PN}-bcm4339 = "Firmware-broadcom_bcm43xx" -RDEPENDS_${PN}-bcm4339 += "${PN}-broadcom-license" -LICENSE_${PN}-bcm43241b0 = "Firmware-broadcom_bcm43xx" -RDEPENDS_${PN}-bcm43241b0 += "${PN}-broadcom-license" -LICENSE_${PN}-bcm43241b4 = "Firmware-broadcom_bcm43xx" -RDEPENDS_${PN}-bcm43241b4 += "${PN}-broadcom-license" -LICENSE_${PN}-bcm43241b5 = "Firmware-broadcom_bcm43xx" -RDEPENDS_${PN}-bcm43241b5 += "${PN}-broadcom-license" -LICENSE_${PN}-bcm43242a = "Firmware-broadcom_bcm43xx" -RDEPENDS_${PN}-bcm43242a += "${PN}-broadcom-license" -LICENSE_${PN}-bcm43143 = "Firmware-broadcom_bcm43xx" -RDEPENDS_${PN}-bcm43143 += "${PN}-broadcom-license" -LICENSE_${PN}-bcm43430a0 = "Firmware-broadcom_bcm43xx" -RDEPENDS_${PN}-bcm43430a0 += "${PN}-broadcom-license" -LICENSE_${PN}-bcm43455 = "Firmware-broadcom_bcm43xx" -RDEPENDS_${PN}-bcm43455 += "${PN}-broadcom-license" -LICENSE_${PN}-bcm4350c2 = "Firmware-broadcom_bcm43xx" -RDEPENDS_${PN}-bcm4350c2 += "${PN}-broadcom-license" -LICENSE_${PN}-bcm4350 = "Firmware-broadcom_bcm43xx" -RDEPENDS_${PN}-bcm4350 += "${PN}-broadcom-license" -LICENSE_${PN}-bcm4356 = "Firmware-broadcom_bcm43xx" -RDEPENDS_${PN}-bcm4356 += "${PN}-broadcom-license" -LICENSE_${PN}-bcm43569 = "Firmware-broadcom_bcm43xx" -RDEPENDS_${PN}-bcm43569 += "${PN}-broadcom-license" -LICENSE_${PN}-bcm43570 = "Firmware-broadcom_bcm43xx" -RDEPENDS_${PN}-bcm43570 += "${PN}-broadcom-license" -LICENSE_${PN}-bcm4358 = "Firmware-broadcom_bcm43xx" -RDEPENDS_${PN}-bcm4358 += "${PN}-broadcom-license" -LICENSE_${PN}-bcm43602 = "Firmware-broadcom_bcm43xx" -RDEPENDS_${PN}-bcm43602 += "${PN}-broadcom-license" -LICENSE_${PN}-bcm4366b = "Firmware-broadcom_bcm43xx" -RDEPENDS_${PN}-bcm4366b += "${PN}-broadcom-license" -LICENSE_${PN}-bcm4371 = "Firmware-broadcom_bcm43xx" -RDEPENDS_${PN}-bcm4371 += "${PN}-broadcom-license" - -# For broadcom cypress - -LICENSE_${PN}-cypress-license = "Firmware-cypress" -FILES_${PN}-cypress-license = "${nonarch_base_libdir}/firmware/LICENCE.cypress" - -FILES_${PN}-bcm-0bb4-0306 = "${nonarch_base_libdir}/firmware/brcm/BCM-0bb4-0306.hcd" -FILES_${PN}-bcm43340 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43340-sdio.bin" -FILES_${PN}-bcm43362 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43362-sdio.bin" -FILES_${PN}-bcm43430 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43430-sdio.bin" -FILES_${PN}-bcm4354 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4354-sdio.bin" -FILES_${PN}-bcm4356-pcie = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4356-pcie.bin" -FILES_${PN}-bcm4373 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4373-sdio.bin \ - ${nonarch_base_libdir}/firmware/brcm/brcmfmac4373.bin \ -" - -LICENSE_${PN}-bcm-0bb4-0306 = "Firmware-cypress" -RDEPENDS_${PN}-bcm-0bb4-0306 += "${PN}-cypress-license" -LICENSE_${PN}-bcm43340 = "Firmware-cypress" -RDEPENDS_${PN}-bcm43340 += "${PN}-cypress-license" -LICENSE_${PN}-bcm43362 = "Firmware-cypress" -RDEPENDS_${PN}-bcm43362 += "${PN}-cypress-license" -LICENSE_${PN}-bcm43430 = "Firmware-cypress" -RDEPENDS_${PN}-bcm43430 += "${PN}-cypress-license" -LICENSE_${PN}-bcm4354 = "Firmware-cypress" -RDEPENDS_${PN}-bcm4354 += "${PN}-cypress-license" -LICENSE_${PN}-bcm4356-pcie = "Firmware-cypress" -RDEPENDS_${PN}-bcm4356-pcie += "${PN}-cypress-license" -LICENSE_${PN}-bcm4373 = "Firmware-cypress" -RDEPENDS_${PN}-bcm4373 += "${PN}-cypress-license" - -# For Broadcom bnx2-mips -# -# which is a separate case to the other Broadcom firmwares since its -# license is contained in the shared WHENCE file. - -LICENSE_${PN}-bnx2-mips = "WHENCE" -LICENSE_${PN}-whence-license = "WHENCE" - -FILES_${PN}-bnx2-mips = "${nonarch_base_libdir}/firmware/bnx2/bnx2-mips-09-6.2.1b.fw" -FILES_${PN}-whence-license = "${nonarch_base_libdir}/firmware/WHENCE" - -RDEPENDS_${PN}-bnx2-mips += "${PN}-whence-license" - -# For imx-sdma -LICENSE_${PN}-imx-sdma-imx6q = "Firmware-imx-sdma_firmware" -LICENSE_${PN}-imx-sdma-imx7d = "Firmware-imx-sdma_firmware" -LICENSE_${PN}-imx-sdma-license = "Firmware-imx-sdma_firmware" - -FILES_${PN}-imx-sdma-imx6q = "${nonarch_base_libdir}/firmware/imx/sdma/sdma-imx6q.bin" - -RPROVIDES_${PN}-imx-sdma-imx6q = "firmware-imx-sdma-imx6q" -RREPLACES_${PN}-imx-sdma-imx6q = "firmware-imx-sdma-imx6q" -RCONFLICTS_${PN}-imx-sdma-imx6q = "firmware-imx-sdma-imx6q" - -FILES_${PN}-imx-sdma-imx7d = "${nonarch_base_libdir}/firmware/imx/sdma/sdma-imx7d.bin" - -FILES_${PN}-imx-sdma-license = "${nonarch_base_libdir}/firmware/LICENSE.sdma_firmware" - -RDEPENDS_${PN}-imx-sdma-imx6q += "${PN}-imx-sdma-license" -RDEPENDS_${PN}-imx-sdma-imx7d += "${PN}-imx-sdma-license" - -# For iwlwifi -LICENSE_${PN}-iwlwifi = "Firmware-iwlwifi_firmware" -LICENSE_${PN}-iwlwifi-135-6 = "Firmware-iwlwifi_firmware" -LICENSE_${PN}-iwlwifi-3160-7 = "Firmware-iwlwifi_firmware" -LICENSE_${PN}-iwlwifi-3160-8 = "Firmware-iwlwifi_firmware" -LICENSE_${PN}-iwlwifi-3160-9 = "Firmware-iwlwifi_firmware" -LICENSE_${PN}-iwlwifi-3160-10 = "Firmware-iwlwifi_firmware" -LICENSE_${PN}-iwlwifi-3160-12 = "Firmware-iwlwifi_firmware" -LICENSE_${PN}-iwlwifi-3160-13 = "Firmware-iwlwifi_firmware" -LICENSE_${PN}-iwlwifi-3160-16 = "Firmware-iwlwifi_firmware" -LICENSE_${PN}-iwlwifi-3160-17 = "Firmware-iwlwifi_firmware" -LICENSE_${PN}-iwlwifi-6000-4 = "Firmware-iwlwifi_firmware" -LICENSE_${PN}-iwlwifi-6000g2a-5 = "Firmware-iwlwifi_firmware" -LICENSE_${PN}-iwlwifi-6000g2a-6 = "Firmware-iwlwifi_firmware" -LICENSE_${PN}-iwlwifi-6000g2b-5 = "Firmware-iwlwifi_firmware" -LICENSE_${PN}-iwlwifi-6000g2b-6 = "Firmware-iwlwifi_firmware" -LICENSE_${PN}-iwlwifi-6050-4 = "Firmware-iwlwifi_firmware" -LICENSE_${PN}-iwlwifi-6050-5 = "Firmware-iwlwifi_firmware" -LICENSE_${PN}-iwlwifi-7260 = "Firmware-iwlwifi_firmware" -LICENSE_${PN}-iwlwifi-7265 = "Firmware-iwlwifi_firmware" -LICENSE_${PN}-iwlwifi-7265d = "Firmware-iwlwifi_firmware" -LICENSE_${PN}-iwlwifi-8000c = "Firmware-iwlwifi_firmware" -LICENSE_${PN}-iwlwifi-8265 = "Firmware-iwlwifi_firmware" -LICENSE_${PN}-iwlwifi-9000 = "Firmware-iwlwifi_firmware" -LICENSE_${PN}-iwlwifi-misc = "Firmware-iwlwifi_firmware" -LICENSE_${PN}-iwlwifi-license = "Firmware-iwlwifi_firmware" - - -FILES_${PN}-iwlwifi-license = "${nonarch_base_libdir}/firmware/LICENCE.iwlwifi_firmware" -FILES_${PN}-iwlwifi-135-6 = "${nonarch_base_libdir}/firmware/iwlwifi-135-6.ucode" -FILES_${PN}-iwlwifi-3160-7 = "${nonarch_base_libdir}/firmware/iwlwifi-3160-7.ucode" -FILES_${PN}-iwlwifi-3160-8 = "${nonarch_base_libdir}/firmware/iwlwifi-3160-8.ucode" -FILES_${PN}-iwlwifi-3160-9 = "${nonarch_base_libdir}/firmware/iwlwifi-3160-9.ucode" -FILES_${PN}-iwlwifi-3160-10 = "${nonarch_base_libdir}/firmware/iwlwifi-3160-10.ucode" -FILES_${PN}-iwlwifi-3160-12 = "${nonarch_base_libdir}/firmware/iwlwifi-3160-12.ucode" -FILES_${PN}-iwlwifi-3160-13 = "${nonarch_base_libdir}/firmware/iwlwifi-3160-13.ucode" -FILES_${PN}-iwlwifi-3160-16 = "${nonarch_base_libdir}/firmware/iwlwifi-3160-16.ucode" -FILES_${PN}-iwlwifi-3160-17 = "${nonarch_base_libdir}/firmware/iwlwifi-3160-17.ucode" -FILES_${PN}-iwlwifi-6000-4 = "${nonarch_base_libdir}/firmware/iwlwifi-6000-4.ucode" -FILES_${PN}-iwlwifi-6000g2a-5 = "${nonarch_base_libdir}/firmware/iwlwifi-6000g2a-5.ucode" -FILES_${PN}-iwlwifi-6000g2a-6 = "${nonarch_base_libdir}/firmware/iwlwifi-6000g2a-6.ucode" -FILES_${PN}-iwlwifi-6000g2b-5 = "${nonarch_base_libdir}/firmware/iwlwifi-6000g2b-5.ucode" -FILES_${PN}-iwlwifi-6000g2b-6 = "${nonarch_base_libdir}/firmware/iwlwifi-6000g2b-6.ucode" -FILES_${PN}-iwlwifi-6050-4 = "${nonarch_base_libdir}/firmware/iwlwifi-6050-4.ucode" -FILES_${PN}-iwlwifi-6050-5 = "${nonarch_base_libdir}/firmware/iwlwifi-6050-5.ucode" -FILES_${PN}-iwlwifi-7260 = "${nonarch_base_libdir}/firmware/iwlwifi-7260-*.ucode" -FILES_${PN}-iwlwifi-7265 = "${nonarch_base_libdir}/firmware/iwlwifi-7265-*.ucode" -FILES_${PN}-iwlwifi-7265d = "${nonarch_base_libdir}/firmware/iwlwifi-7265D-*.ucode" -FILES_${PN}-iwlwifi-8000c = "${nonarch_base_libdir}/firmware/iwlwifi-8000C-*.ucode" -FILES_${PN}-iwlwifi-8265 = "${nonarch_base_libdir}/firmware/iwlwifi-8265-*.ucode" -FILES_${PN}-iwlwifi-9000 = "${nonarch_base_libdir}/firmware/iwlwifi-9000-*.ucode" -FILES_${PN}-iwlwifi-misc = "${nonarch_base_libdir}/firmware/iwlwifi-*.ucode" - -RDEPENDS_${PN}-iwlwifi-135-6 = "${PN}-iwlwifi-license" -RDEPENDS_${PN}-iwlwifi-3160-7 = "${PN}-iwlwifi-license" -RDEPENDS_${PN}-iwlwifi-3160-8 = "${PN}-iwlwifi-license" -RDEPENDS_${PN}-iwlwifi-3160-9 = "${PN}-iwlwifi-license" -RDEPENDS_${PN}-iwlwifi-3160-10 = "${PN}-iwlwifi-license" -RDEPENDS_${PN}-iwlwifi-3160-12 = "${PN}-iwlwifi-license" -RDEPENDS_${PN}-iwlwifi-3160-13 = "${PN}-iwlwifi-license" -RDEPENDS_${PN}-iwlwifi-3160-16 = "${PN}-iwlwifi-license" -RDEPENDS_${PN}-iwlwifi-3160-17 = "${PN}-iwlwifi-license" -RDEPENDS_${PN}-iwlwifi-6000-4 = "${PN}-iwlwifi-license" -RDEPENDS_${PN}-iwlwifi-6000g2a-5 = "${PN}-iwlwifi-license" -RDEPENDS_${PN}-iwlwifi-6000g2a-6 = "${PN}-iwlwifi-license" -RDEPENDS_${PN}-iwlwifi-6000g2b-5 = "${PN}-iwlwifi-license" -RDEPENDS_${PN}-iwlwifi-6000g2b-6 = "${PN}-iwlwifi-license" -RDEPENDS_${PN}-iwlwifi-6050-4 = "${PN}-iwlwifi-license" -RDEPENDS_${PN}-iwlwifi-6050-5 = "${PN}-iwlwifi-license" -RDEPENDS_${PN}-iwlwifi-7260 = "${PN}-iwlwifi-license" -RDEPENDS_${PN}-iwlwifi-7265 = "${PN}-iwlwifi-license" -RDEPENDS_${PN}-iwlwifi-7265d = "${PN}-iwlwifi-license" -RDEPENDS_${PN}-iwlwifi-8000c = "${PN}-iwlwifi-license" -RDEPENDS_${PN}-iwlwifi-8265 = "${PN}-iwlwifi-license" -RDEPENDS_${PN}-iwlwifi-9000 = "${PN}-iwlwifi-license" -RDEPENDS_${PN}-iwlwifi-misc = "${PN}-iwlwifi-license" - -# -iwlwifi-misc is a "catch all" package that includes all the iwlwifi -# firmwares that are not already included in other -iwlwifi- packages. -# -iwlwifi is a virtual package that depends upon all iwlwifi packages. -# These are distinct in order to allow the -misc firmwares to be installed -# without pulling in every other iwlwifi package. -ALLOW_EMPTY_${PN}-iwlwifi = "1" -ALLOW_EMPTY_${PN}-iwlwifi-misc = "1" - -# Handle package updating for the newly merged iwlwifi groupings -RPROVIDES_${PN}-iwlwifi-7265 = "${PN}-iwlwifi-7265-8 ${PN}-iwlwifi-7265-9" -RREPLACES_${PN}-iwlwifi-7265 = "${PN}-iwlwifi-7265-8 ${PN}-iwlwifi-7265-9" -RCONFLICTS_${PN}-iwlwifi-7265 = "${PN}-iwlwifi-7265-8 ${PN}-iwlwifi-7265-9" - -RPROVIDES_${PN}-iwlwifi-7260 = "${PN}-iwlwifi-7260-7 ${PN}-iwlwifi-7260-8 ${PN}-iwlwifi-7260-9" -RREPLACES_${PN}-iwlwifi-7260 = "${PN}-iwlwifi-7260-7 ${PN}-iwlwifi-7260-8 ${PN}-iwlwifi-7260-9" -RCONFLICTS_${PN}-iwlwifi-7260 = "${PN}-iwlwifi-7260-7 ${PN}-iwlwifi-7260-8 ${PN}-iwlwifi-7260-9" - -# For ibt -LICENSE_${PN}-ibt-license = "Firmware-ibt_firmware" -LICENSE_${PN}-ibt-hw-37-7 = "Firmware-ibt_firmware" -LICENSE_${PN}-ibt-hw-37-8 = "Firmware-ibt_firmware" -LICENSE_${PN}-ibt-11-5 = "Firmware-ibt_firmware" -LICENSE_${PN}-ibt-12-16 = "Firmware-ibt_firmware" -LICENSE_${PN}-ibt-17 = "Firmware-ibt_firmware" -LICENSE_${PN}-ibt-misc = "Firmware-ibt_firmware" - -FILES_${PN}-ibt-license = "${nonarch_base_libdir}/firmware/LICENCE.ibt_firmware" -FILES_${PN}-ibt-hw-37-7 = "${nonarch_base_libdir}/firmware/intel/ibt-hw-37.7*.bseq" -FILES_${PN}-ibt-hw-37-8 = "${nonarch_base_libdir}/firmware/intel/ibt-hw-37.8*.bseq" -FILES_${PN}-ibt-11-5 = "${nonarch_base_libdir}/firmware/intel/ibt-11-5.sfi ${nonarch_base_libdir}/firmware/intel/ibt-11-5.ddc" -FILES_${PN}-ibt-12-16 = "${nonarch_base_libdir}/firmware/intel/ibt-12-16.sfi ${nonarch_base_libdir}/firmware/intel/ibt-12-16.ddc" -FILES_${PN}-ibt-17 = "${nonarch_base_libdir}/firmware/intel/ibt-17-*.sfi ${nonarch_base_libdir}/firmware/intel/ibt-17-*.ddc" -FILES_${PN}-ibt-misc = "${nonarch_base_libdir}/firmware/ibt-*" - -RDEPENDS_${PN}-ibt-hw-37-7 = "${PN}-ibt-license" -RDEPENDS_${PN}-ibt-hw-37.8 = "${PN}-ibt-license" -RDEPENDS_${PN}-ibt-11-5 = "${PN}-ibt-license" -RDEPENDS_${PN}-ibt-12-16 = "${PN}-ibt-license" -RDEPENDS_${PN}-ibt-17 = "${PN}-ibt-license" -RDEPENDS_${PN}-ibt-misc = "${PN}-ibt-license" - -ALLOW_EMPTY_${PN}-ibt= "1" -ALLOW_EMPTY_${PN}-ibt-misc = "1" - -LICENSE_${PN}-i915 = "Firmware-i915" -LICENSE_${PN}-i915-license = "Firmware-i915" -FILES_${PN}-i915-license = "${nonarch_base_libdir}/firmware/LICENSE.i915" -FILES_${PN}-i915 = "${nonarch_base_libdir}/firmware/i915" -RDEPENDS_${PN}-i915 = "${PN}-i915-license" - -FILES_${PN}-adsp-sst-license = "${nonarch_base_libdir}/firmware/LICENCE.adsp_sst" -LICENSE_${PN}-adsp-sst = "Firmware-adsp_sst" -LICENSE_${PN}-adsp-sst-license = "Firmware-adsp_sst" -FILES_${PN}-adsp-sst = "${nonarch_base_libdir}/firmware/intel/dsp_fw*" -RDEPENDS_${PN}-adsp-sst = "${PN}-adsp-sst-license" - -# For QAT -LICENSE_${PN}-qat = "Firmware-qat" -LICENSE_${PN}-qat-license = "Firmware-qat" -FILES_${PN}-qat-license = "${nonarch_base_libdir}/firmware/LICENCE.qat_firmware" -FILES_${PN}-qat = "${nonarch_base_libdir}/firmware/qat*.bin" -RDEPENDS_${PN}-qat = "${PN}-qat-license" - -# For QCOM VPU/GPU -LICENSE_${PN}-qcom-license = "Firmware-qcom" -FILES_${PN}-qcom-license = "${nonarch_base_libdir}/firmware/LICENSE.qcom ${nonarch_base_libdir}/firmware/qcom/NOTICE.txt" -FILES_${PN}-qcom-venus-1.8 = "${nonarch_base_libdir}/firmware/qcom/venus-1.8/*" -FILES_${PN}-qcom-venus-4.2 = "${nonarch_base_libdir}/firmware/qcom/venus-4.2/*" -FILES_${PN}-qcom-adreno-a3xx = "${nonarch_base_libdir}/firmware/qcom/a300_*.fw ${nonarch_base_libdir}/firmware/a300_*.fw" -FILES_${PN}-qcom-adreno-a530 = "${nonarch_base_libdir}/firmware/qcom/a530*.*" -RDEPENDS_${PN}-qcom-venus-1.8 = "${PN}-qcom-license" -RDEPENDS_${PN}-qcom-venus-4.2 = "${PN}-qcom-license" -RDEPENDS_${PN}-qcom-adreno-a3xx = "${PN}-qcom-license" -RDEPENDS_${PN}-qcom-adreno-a530 = "${PN}-qcom-license" - -FILES_${PN}-liquidio = "${nonarch_base_libdir}/firmware/liquidio" - -# For other firmwares -# Maybe split out to separate packages when needed. -LICENSE_${PN} = "\ - Firmware-Abilis \ - & Firmware-agere \ - & Firmware-amdgpu \ - & Firmware-amd-ucode \ - & Firmware-atmel \ - & Firmware-ca0132 \ - & Firmware-cavium \ - & Firmware-chelsio_firmware \ - & Firmware-cw1200 \ - & Firmware-dib0700 \ - & Firmware-e100 \ - & Firmware-ene_firmware \ - & Firmware-fw_sst_0f28 \ - & Firmware-go7007 \ - & Firmware-hfi1_firmware \ - & Firmware-i2400m \ - & Firmware-ibt_firmware \ - & Firmware-it913x \ - & Firmware-IntcSST2 \ - & Firmware-kaweth \ - & Firmware-moxa \ - & Firmware-myri10ge_firmware \ - & Firmware-nvidia \ - & Firmware-OLPC \ - & Firmware-ath9k-htc \ - & Firmware-phanfw \ - & Firmware-qat \ - & Firmware-qcom \ - & Firmware-qla1280 \ - & Firmware-qla2xxx \ - & Firmware-r8a779x_usb3 \ - & Firmware-radeon \ - & Firmware-ralink_a_mediatek_company_firmware \ - & Firmware-ralink-firmware \ - & Firmware-imx-sdma_firmware \ - & Firmware-siano \ - & Firmware-tda7706-firmware \ - & Firmware-ti-connectivity \ - & Firmware-ti-keystone \ - & Firmware-ueagle-atm4-firmware \ - & Firmware-wl1251 \ - & Firmware-xc4000 \ - & Firmware-xc5000 \ - & Firmware-xc5000c \ - & WHENCE \ -" - -FILES_${PN}-license += "${nonarch_base_libdir}/firmware/LICEN*" -FILES_${PN} += "${nonarch_base_libdir}/firmware/*" -RDEPENDS_${PN} += "${PN}-license" -RDEPENDS_${PN} += "${PN}-whence-license" - -# Make linux-firmware depend on all of the split-out packages. -# Make linux-firmware-iwlwifi depend on all of the split-out iwlwifi packages. -# Make linux-firmware-ibt depend on all of the split-out ibt packages. -python populate_packages_prepend () { - firmware_pkgs = oe.utils.packages_filter_out_system(d) - d.appendVar('RRECOMMENDS_linux-firmware', ' ' + ' '.join(firmware_pkgs)) - - iwlwifi_pkgs = filter(lambda x: x.find('-iwlwifi-') != -1, firmware_pkgs) - d.appendVar('RRECOMMENDS_linux-firmware-iwlwifi', ' ' + ' '.join(iwlwifi_pkgs)) - - ibt_pkgs = filter(lambda x: x.find('-ibt-') != -1, firmware_pkgs) - d.appendVar('RRECOMMENDS_linux-firmware-ibt', ' ' + ' '.join(ibt_pkgs)) -} - -# Firmware files are generally not ran on the CPU, so they can be -# allarch despite being architecture specific -INSANE_SKIP = "arch" diff --git a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers.inc b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers.inc index 7f838f623e..3a8d32e785 100644 --- a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers.inc +++ b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers.inc @@ -1,6 +1,8 @@ SUMMARY = "Sanitized set of kernel headers for the C library's use" +HOMEPAGE = "https://www.kernel.org/" +DESCRIPTION = "Designed to maintain an Application Programming Interface (API) stable version of the Linux headers" SECTION = "devel" -LICENSE = "GPLv2" +LICENSE = "GPL-2.0-only" ######################################################################### #### PLEASE READ @@ -16,7 +18,7 @@ LICENSE = "GPLv2" # and have a machine specific libc. # # But you have some kernel headers you need for some driver? That is fine -# but get them from STAGING_KERNEL_DIR where the kernel installs itself. +# but get them from STAGING_KERNEL_BUILDDIR where the kernel installs itself. # This will make the package using them machine specific but this is much # better than having a machine specific C library. This does mean your # recipe needs a @@ -30,7 +32,9 @@ LICENSE = "GPLv2" # # -- RP -LIC_FILES_CHKSUM = "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814" +LIC_FILES_CHKSUM ?= "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814" + +RECIPE_NO_UPDATE_REASON = "Recipe is updated through a separate process" python __anonymous () { major = d.getVar("PV").split('.')[0] @@ -40,10 +44,15 @@ python __anonymous () { d.setVar("HEADER_FETCH_VER", "4.x") elif major == "5": d.setVar("HEADER_FETCH_VER", "5.x") + elif major == "6": + d.setVar("HEADER_FETCH_VER", "6.x") else: d.setVar("HEADER_FETCH_VER", "2.6") } +MAJ_VER = "${@oe.utils.trim_version("${PV}", 2).split('.')[0]}" +MIN_VER = "${@oe.utils.trim_version("${PV}", 2).split('.')[1]}" + inherit kernel-arch pkgconfig multilib_header KORG_ARCHIVE_COMPRESSION ?= "xz" @@ -68,27 +77,36 @@ do_install() { find ${D}${includedir} -name ..install.cmd | xargs rm -f } -do_install_append_aarch64 () { +do_install:append:aarch64 () { do_install_armmultilib } -do_install_append_arm () { +do_install:append:arm () { do_install_armmultilib } -do_install_append_armeb () { +do_install:append:armeb () { do_install_armmultilib } do_install_armmultilib () { - oe_multilib_header asm/auxvec.h asm/bitsperlong.h asm/byteorder.h asm/fcntl.h asm/hwcap.h asm/ioctls.h asm/kvm.h asm/kvm_para.h asm/mman.h asm/param.h asm/perf_regs.h asm/bpf_perf_event.h + if [ ${MAJ_VER} -gt 5 ]; then + ARM_KVM_HEADER="" + else + if [ ${MAJ_VER} -eq 5 ] && [ ${MIN_VER} -ge 8 ]; then + ARM_KVM_HEADER="" + else + ARM_KVM_HEADER="asm/kvm.h" + fi + fi + oe_multilib_header asm/auxvec.h asm/bitsperlong.h asm/byteorder.h asm/fcntl.h asm/hwcap.h asm/ioctls.h $ARM_KVM_HEADER asm/kvm_para.h asm/mman.h asm/param.h asm/perf_regs.h asm/bpf_perf_event.h oe_multilib_header asm/posix_types.h asm/ptrace.h asm/setup.h asm/sigcontext.h asm/siginfo.h asm/signal.h asm/stat.h asm/statfs.h asm/swab.h asm/types.h asm/unistd.h } BBCLASSEXTEND = "nativesdk" -RDEPENDS_${PN}-dev = "" -RRECOMMENDS_${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})" +DEV_PKG_DEPENDENCY = "" +RRECOMMENDS:${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})" INHIBIT_DEFAULT_DEPS = "1" -DEPENDS += "unifdef-native bison-native" +DEPENDS += "unifdef-native bison-native rsync-native" diff --git a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-if_ether-move-muslc-ethhdr-protection-to-uapi-file.patch b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-if_ether-move-muslc-ethhdr-protection-to-uapi-file.patch deleted file mode 100644 index 68b244698f..0000000000 --- a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-if_ether-move-muslc-ethhdr-protection-to-uapi-file.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 897736166fd709906a5fdf16eb23f8fddff770b5 Mon Sep 17 00:00:00 2001 -From: Bruce Ashfield <bruce.ashfield@windriver.com> -Date: Thu, 1 Mar 2018 18:31:01 -0500 -Subject: [PATCH] if_ether: move muslc ethhdr protection to uapi file - -Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com> -Upstream-Status: Pending ---- - include/uapi/linux/if_ether.h | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/include/uapi/linux/if_ether.h b/include/uapi/linux/if_ether.h -index 153c9c2..7b69b73 100644 ---- a/include/uapi/linux/if_ether.h -+++ b/include/uapi/linux/if_ether.h -@@ -149,6 +149,12 @@ - * This is an Ethernet frame header. - */ - -+#ifdef _NETINET_IF_ETHER_H /* musl */ -+#define __UAPI_DEF_ETHHDR 0 -+#else /* glibc uses __NETINET_IF_ETHER_H, and includes the kernel header. */ -+#define __UAPI_DEF_ETHHDR 1 -+#endif -+ - /* allow libcs like musl to deactivate this, glibc does not implement this. */ - #ifndef __UAPI_DEF_ETHHDR - #define __UAPI_DEF_ETHHDR 1 --- -2.7.4 - diff --git a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-include-linux-stddef.h-in-swab.h-uapi-header.patch b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-include-linux-stddef.h-in-swab.h-uapi-header.patch deleted file mode 100644 index 9d17daa70f..0000000000 --- a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-include-linux-stddef.h-in-swab.h-uapi-header.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 9708dc74d9f49488d669e070982f6224a888d61a Mon Sep 17 00:00:00 2001 -From: Khem Raj <raj.khem@gmail.com> -Date: Wed, 12 Sep 2018 17:08:58 -0700 -Subject: [PATCH] include linux/stddef.h in swab.h uapi header - -swab.h uses __always_inline without including the header where it is -defined, this is exposed by musl based distributions where this macro is -not defined by system C library headers unlike glibc where it is defined -in sys/cdefs.h and that header gets pulled in indirectly via - -features.h -> sys/cdefs.h - -and features.h gets pulled in a lot of headers. Therefore it may work in -cases where features.h is includes but not otherwise. - -Adding linux/stddef.h here ensures that __always_inline is always -defined independent of which C library is used in userspace - -Upstream-Status: Submitted [https://lkml.org/lkml/2018/9/13/78] - -Signed-off-by: Khem Raj <raj.khem@gmail.com> -Cc: Philippe Ombredanne <pombredanne@nexb.com> -Cc: Kate Stewart <kstewart@linuxfoundation.org> -Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> -Cc: Thomas Gleixner <tglx@linutronix.de> ---- - include/uapi/linux/swab.h | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/include/uapi/linux/swab.h b/include/uapi/linux/swab.h -index 23cd84868cc3..acddbe50a20d 100644 ---- a/include/uapi/linux/swab.h -+++ b/include/uapi/linux/swab.h -@@ -3,6 +3,7 @@ - #define _UAPI_LINUX_SWAB_H - - #include <linux/types.h> -+#include <linux/stddef.h> - #include <linux/compiler.h> - #include <asm/swab.h> - --- -2.19.0 - diff --git a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-kbuild-install_headers.sh-Strip-_UAPI-from-if-define.patch b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-kbuild-install_headers.sh-Strip-_UAPI-from-if-define.patch index 78ebd31e66..54528b6e6a 100644 --- a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-kbuild-install_headers.sh-Strip-_UAPI-from-if-define.patch +++ b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-kbuild-install_headers.sh-Strip-_UAPI-from-if-define.patch @@ -24,18 +24,15 @@ Upstream-Status: Submitted [https://www.spinics.net/lists/arm-kernel/msg694800.h scripts/headers_install.sh | 1 + 1 file changed, 1 insertion(+) -diff --git a/scripts/headers_install.sh b/scripts/headers_install.sh -index 593f8879c641..fe1d3fc0d33a 100755 ---- a/scripts/headers_install.sh -+++ b/scripts/headers_install.sh -@@ -38,6 +38,7 @@ do - -e 's/(^|[^a-zA-Z0-9])__packed([^a-zA-Z0-9_]|$)/\1__attribute__((packed))\2/g' \ - -e 's/(^|[[:space:](])(inline|asm|volatile)([[:space:](]|$)/\1__\2__\3/g' \ - -e 's@#(ifndef|define|endif[[:space:]]*/[*])[[:space:]]*_UAPI@#\1 @' \ -+ -e ':1;s/(#(if|elif)(.*[^A-Za-z0-9_])defined\([[:space:]]*)_UAPI/\1/;t1' \ - "$SRCDIR/$i" > "$OUTDIR/$FILE.sed" || exit 1 - scripts/unifdef -U__KERNEL__ -D__EXPORTED_HEADERS__ "$OUTDIR/$FILE.sed" \ - > "$OUTDIR/$FILE" --- -2.5.0 - +Index: linux-5.4/scripts/headers_install.sh +=================================================================== +--- linux-5.4.orig/scripts/headers_install.sh ++++ linux-5.4/scripts/headers_install.sh +@@ -36,6 +36,7 @@ + s/(^|[^a-zA-Z0-9])__packed([^a-zA-Z0-9_]|$)/\1__attribute__((packed))\2/g + s/(^|[[:space:](])(inline|asm|volatile)([[:space:](]|$)/\1__\2__\3/g + s@#(ifndef|define|endif[[:space:]]*/[*])[[:space:]]*_UAPI@#\1 @ ++ :1;s/(#(if|elif)(.*[^A-Za-z0-9_])defined\([[:space:]]*)_UAPI/\1/;t1 + ' $INFILE > $TMPFILE || exit 1 + + scripts/unifdef -U__KERNEL__ -D__EXPORTED_HEADERS__ $TMPFILE > $OUTFILE diff --git a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-scripts-Use-fixed-input-and-output-files-instead-of-.patch b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-scripts-Use-fixed-input-and-output-files-instead-of-.patch deleted file mode 100644 index a5ded602e5..0000000000 --- a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-scripts-Use-fixed-input-and-output-files-instead-of-.patch +++ /dev/null @@ -1,67 +0,0 @@ -From 694eba7bb974f6b8bd308804cb24350150108b2b Mon Sep 17 00:00:00 2001 -From: He Zhe <zhe.he@windriver.com> -Date: Wed, 21 Nov 2018 15:12:43 +0800 -Subject: [PATCH] scripts: Use fixed input and output files instead of pipe for here-doc - -There was a bug of "as" in binutils that when it checks if the input file and -output file are the same one, it would not check if they are on the same block -device. The check is introduced by the following commit in v2.31. - -https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h= -67f846b59b32f3d704c601669409c2584383fea9 - -The here-doc usage in this script creates temporary file in /tmp. When we run in -an environment where /tmp has rarely been used, the newly created temporary file -may have a very low inode number. If the inode number was 6 which is the same as -/dev/null, the as would wrongly think the input file and the output file are the -same and report the following error. - -*** Compiler lacks asm-goto support.. Stop. - -One observed case happened in docker where the /tmp could be so rarely used that -very low number inode may be allocated and triggers the error. - -The fix below for the bug only exists on the master branch of binutils so far -and has not been released from upstream. As the convict is introduced since -v2.31, only v2.31 is affected. - -https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h= -2a50366ded329bfb39d387253450c9d5302c3503 - -When building linux-libc-headers we need to use "as" in binutils which does not -contain the fix for the moment. To work around the error, we create a fixed -temporary file to contain the program being tested. - -This patch also removes ">/dev/null 2>&1" so we will have more direct error -information in case something else wrong happened. - -Upstream-Status: Inappropriate [A work around for binutils v2.31] - -Signed-off-by: He Zhe <zhe.he@windriver.com> ---- - scripts/gcc-goto.sh | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/scripts/gcc-goto.sh b/scripts/gcc-goto.sh -index 8b980fb22..d256a9438 100755 ---- a/scripts/gcc-goto.sh -+++ b/scripts/gcc-goto.sh -@@ -3,7 +3,7 @@ - # Test for gcc 'asm goto' support - # Copyright (C) 2010, Jason Baron <jbaron@redhat.com> - --cat << "END" | $@ -x c - -fno-PIE -c -o /dev/null -+cat << "END" > ./input - int main(void) - { - #if defined(__arm__) || defined(__aarch64__) -@@ -20,3 +20,6 @@ entry: - return 0; - } - END -+ -+$@ -x c ./input -fno-PIE -c -o ./output -+rm ./input ./output --- -2.19.1 - diff --git a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0002-libc-compat.h-prevent-redefinition-of-struct-ethhdr.patch b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0002-libc-compat.h-prevent-redefinition-of-struct-ethhdr.patch deleted file mode 100644 index fb7e1de17a..0000000000 --- a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0002-libc-compat.h-prevent-redefinition-of-struct-ethhdr.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 75ba4a547282f91d653872a4bba5f5eae234ea6c Mon Sep 17 00:00:00 2001 -From: rofl0r <retnyg@gmx.net> -Date: Wed, 22 Jan 2014 00:57:48 +0100 -Subject: [PATCH 2/3] libc-compat.h: prevent redefinition of struct ethhdr - ---- -Signed-off-by: Khem Raj <raj.khem@gmail.com> -Upstream-Status: Submitted - - include/uapi/linux/if_ether.h | 4 +++- - include/uapi/linux/libc-compat.h | 6 ++++++ - 2 files changed, 9 insertions(+), 1 deletion(-) - -Index: linux-4.15/include/uapi/linux/libc-compat.h -=================================================================== ---- linux-4.15.orig/include/uapi/linux/libc-compat.h 2018-02-05 17:40:42.338370731 -0500 -+++ linux-4.15/include/uapi/linux/libc-compat.h 2018-02-05 17:40:42.334370603 -0500 -@@ -51,6 +51,12 @@ - - #ifndef __KERNEL__ /* we're used from userspace */ - -+#ifdef _NETINET_IF_ETHER_H /* musl */ -+#define __UAPI_DEF_ETHHDR 0 -+#else /* glibc uses __NETINET_IF_ETHER_H, and includes the kernel header. */ -+#define __UAPI_DEF_ETHHDR 1 -+#endif -+ - /* Coordinate with libc net/if.h header. */ - #if defined(_NET_IF_H) - diff --git a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0003-remove-inclusion-of-sysinfo.h-in-kernel.h.patch b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0003-remove-inclusion-of-sysinfo.h-in-kernel.h.patch index b5c4e1750e..b0e7014138 100644 --- a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0003-remove-inclusion-of-sysinfo.h-in-kernel.h.patch +++ b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0003-remove-inclusion-of-sysinfo.h-in-kernel.h.patch @@ -13,17 +13,17 @@ Upstream-Status: Submitted include/uapi/linux/kernel.h | 2 ++ 1 file changed, 2 insertions(+) -Index: linux-4.8-rc4/include/uapi/linux/kernel.h +Index: linux-5.12.11/include/uapi/linux/kernel.h =================================================================== ---- linux-4.8-rc4.orig/include/uapi/linux/kernel.h -+++ linux-4.8-rc4/include/uapi/linux/kernel.h -@@ -1,7 +1,9 @@ +--- linux-5.12.11.orig/include/uapi/linux/kernel.h ++++ linux-5.12.11/include/uapi/linux/kernel.h +@@ -2,7 +2,9 @@ #ifndef _UAPI_LINUX_KERNEL_H #define _UAPI_LINUX_KERNEL_H +#ifdef __GLIBC__ #include <linux/sysinfo.h> + #include <linux/const.h> +#endif - /* - * 'kernel.h' contains some often-used function prototypes etc + #endif /* _UAPI_LINUX_KERNEL_H */ diff --git a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_5.0.bb b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_5.0.bb deleted file mode 100644 index e76120c5b8..0000000000 --- a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_5.0.bb +++ /dev/null @@ -1,18 +0,0 @@ -require linux-libc-headers.inc - -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 \ - file://0001-libc-compat.h-musl-_does_-define-IFF_LOWER_UP-DORMAN.patch \ - file://0001-if_ether-move-muslc-ethhdr-protection-to-uapi-file.patch \ - file://0001-include-linux-stddef.h-in-swab.h-uapi-header.patch \ - " - -SRC_URI_append = "\ - file://0001-scripts-Use-fixed-input-and-output-files-instead-of-.patch \ - file://0001-kbuild-install_headers.sh-Strip-_UAPI-from-if-define.patch \ -" - -SRC_URI[md5sum] = "7381ce8aac80a01448e065ce795c19c0" -SRC_URI[sha256sum] = "437b141a6499159f5a7282d5eb4b2be055f8e862ccce44d7464e8759c31a2e43" diff --git a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_6.6.bb b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_6.6.bb new file mode 100644 index 0000000000..d68de6ec7e --- /dev/null +++ b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_6.6.bb @@ -0,0 +1,17 @@ +require linux-libc-headers.inc + +SRC_URI:append:libc-musl = "\ + file://0001-libc-compat.h-fix-some-issues-arising-from-in6.h.patch \ + file://0003-remove-inclusion-of-sysinfo.h-in-kernel.h.patch \ + file://0001-libc-compat.h-musl-_does_-define-IFF_LOWER_UP-DORMAN.patch \ + " + +SRC_URI += "\ + file://0001-kbuild-install_headers.sh-Strip-_UAPI-from-if-define.patch \ +" + +LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" + +SRC_URI[sha256sum] = "d926a06c63dd8ac7df3f86ee1ffc2ce2a3b81a2d168484e76b5b389aba8e56d0" + + diff --git a/meta/recipes-kernel/linux/cve-exclusion.inc b/meta/recipes-kernel/linux/cve-exclusion.inc new file mode 100644 index 0000000000..7857633943 --- /dev/null +++ b/meta/recipes-kernel/linux/cve-exclusion.inc @@ -0,0 +1,34 @@ +CVE_STATUS[CVE-1999-0656] = "not-applicable-config: specific to ugidd, part of the old user-mode NFS server" + +CVE_STATUS[CVE-2006-2932] = "not-applicable-platform: specific to RHEL" + +CVE_STATUS[CVE-2007-2764] = "not-applicable-platform: specific to Sun/Brocade SilkWorm switches" + +CVE_STATUS[CVE-2007-4998] = "cpe-incorrect: a historic cp bug, no longer an issue as per https://bugzilla.redhat.com/show_bug.cgi?id=356471#c5" + +CVE_STATUS[CVE-2008-2544] = "disputed: not an issue as per https://bugzilla.redhat.com/show_bug.cgi?id=449089#c22" + +CVE_STATUS[CVE-2010-0298] = "fixed-version: 2.6.34 (1871c6)" + +CVE_STATUS[CVE-2014-2648] = "cpe-incorrect: not Linux" + +CVE_STATUS[CVE-2016-0774] = "ignored: result of incomplete backport" + +CVE_STATUS[CVE-2016-3695] = "not-applicable-platform: specific to RHEL with securelevel patches" + +CVE_STATUS[CVE-2016-3699] = "not-applicable-platform: specific to RHEL with securelevel patches" + +CVE_STATUS[CVE-2017-6264] = "not-applicable-platform: Android specific" + +CVE_STATUS[CVE-2017-1000377] = "not-applicable-platform: GRSecurity specific" + +CVE_STATUS[CVE-2018-6559] = "not-applicable-platform: Issue only affects Ubuntu" + +CVE_STATUS[CVE-2020-11935] = "not-applicable-config: Issue only affects aufs, which is not in linux-yocto" + +# Introduced in version v6.1 7b88bda3761b95856cf97822efe8281c8100067b +# Patched in kernel since v6.2 4a625ceee8a0ab0273534cb6b432ce6b331db5ee +# But, the CVE is disputed: +CVE_STATUS[CVE-2023-23005] = "disputed: There are no realistic cases \ +in which a user can cause the alloc_memory_type error case to be reached. \ +See: https://bugzilla.suse.com/show_bug.cgi?id=1208844#c2" diff --git a/meta/recipes-kernel/linux/cve-exclusion_6.6.inc b/meta/recipes-kernel/linux/cve-exclusion_6.6.inc new file mode 100644 index 0000000000..bb9ba49c48 --- /dev/null +++ b/meta/recipes-kernel/linux/cve-exclusion_6.6.inc @@ -0,0 +1,5384 @@ + +# Auto-generated CVE metadata, DO NOT EDIT BY HAND. +# Generated at 2024-03-28 16:40:04.102652+00:00 for version 6.6.23 + +python check_kernel_cve_status_version() { + this_version = "6.6.23" + kernel_version = d.getVar("LINUX_VERSION") + if kernel_version != this_version: + bb.warn("Kernel CVE status needs updating: generated for %s but kernel is %s" % (this_version, kernel_version)) +} +do_cve_check[prefuncs] += "check_kernel_cve_status_version" + +CVE_STATUS[CVE-2003-1604] = "fixed-version: Fixed from version 2.6.12rc2" + +CVE_STATUS[CVE-2004-0230] = "fixed-version: Fixed from version 3.6rc1" + +# CVE-2005-3660 has no known resolution + +CVE_STATUS[CVE-2006-3635] = "fixed-version: Fixed from version 2.6.26rc5" + +CVE_STATUS[CVE-2006-5331] = "fixed-version: Fixed from version 2.6.19rc3" + +CVE_STATUS[CVE-2006-6128] = "fixed-version: Fixed from version 2.6.19rc2" + +# CVE-2007-3719 has no known resolution + +CVE_STATUS[CVE-2007-4774] = "fixed-version: Fixed from version 2.6.12rc2" + +CVE_STATUS[CVE-2007-6761] = "fixed-version: Fixed from version 2.6.24rc6" + +CVE_STATUS[CVE-2007-6762] = "fixed-version: Fixed from version 2.6.20rc5" + +# CVE-2008-2544 has no known resolution + +# CVE-2008-4609 has no known resolution + +CVE_STATUS[CVE-2008-7316] = "fixed-version: Fixed from version 2.6.25rc1" + +CVE_STATUS[CVE-2009-2692] = "fixed-version: Fixed from version 2.6.31rc6" + +CVE_STATUS[CVE-2010-0008] = "fixed-version: Fixed from version 2.6.23rc9" + +CVE_STATUS[CVE-2010-3432] = "fixed-version: Fixed from version 2.6.36rc5" + +# CVE-2010-4563 has no known resolution + +CVE_STATUS[CVE-2010-4648] = "fixed-version: Fixed from version 2.6.37rc6" + +CVE_STATUS[CVE-2010-5313] = "fixed-version: Fixed from version 2.6.38rc1" + +# CVE-2010-5321 has no known resolution + +CVE_STATUS[CVE-2010-5328] = "fixed-version: Fixed from version 2.6.35rc1" + +CVE_STATUS[CVE-2010-5329] = "fixed-version: Fixed from version 2.6.39rc1" + +CVE_STATUS[CVE-2010-5331] = "fixed-version: Fixed from version 2.6.34rc7" + +CVE_STATUS[CVE-2010-5332] = "fixed-version: Fixed from version 2.6.37rc1" + +CVE_STATUS[CVE-2011-4098] = "fixed-version: Fixed from version 3.2rc1" + +CVE_STATUS[CVE-2011-4131] = "fixed-version: Fixed from version 3.3rc1" + +CVE_STATUS[CVE-2011-4915] = "fixed-version: Fixed from version 3.2rc1" + +# CVE-2011-4916 has no known resolution + +# CVE-2011-4917 has no known resolution + +CVE_STATUS[CVE-2011-5321] = "fixed-version: Fixed from version 3.2rc1" + +CVE_STATUS[CVE-2011-5327] = "fixed-version: Fixed from version 3.1rc1" + +CVE_STATUS[CVE-2012-0957] = "fixed-version: Fixed from version 3.7rc2" + +CVE_STATUS[CVE-2012-2119] = "fixed-version: Fixed from version 3.5rc1" + +CVE_STATUS[CVE-2012-2136] = "fixed-version: Fixed from version 3.5rc1" + +CVE_STATUS[CVE-2012-2137] = "fixed-version: Fixed from version 3.5rc2" + +CVE_STATUS[CVE-2012-2313] = "fixed-version: Fixed from version 3.4rc6" + +CVE_STATUS[CVE-2012-2319] = "fixed-version: Fixed from version 3.4rc6" + +CVE_STATUS[CVE-2012-2372] = "fixed-version: Fixed from version 3.13rc4" + +CVE_STATUS[CVE-2012-2375] = "fixed-version: Fixed from version 3.4rc1" + +CVE_STATUS[CVE-2012-2390] = "fixed-version: Fixed from version 3.5rc1" + +CVE_STATUS[CVE-2012-2669] = "fixed-version: Fixed from version 3.5rc4" + +CVE_STATUS[CVE-2012-2744] = "fixed-version: Fixed from version 2.6.34rc1" + +CVE_STATUS[CVE-2012-2745] = "fixed-version: Fixed from version 3.4rc3" + +CVE_STATUS[CVE-2012-3364] = "fixed-version: Fixed from version 3.5rc6" + +CVE_STATUS[CVE-2012-3375] = "fixed-version: Fixed from version 3.4rc5" + +CVE_STATUS[CVE-2012-3400] = "fixed-version: Fixed from version 3.5rc5" + +CVE_STATUS[CVE-2012-3412] = "fixed-version: Fixed from version 3.6rc2" + +CVE_STATUS[CVE-2012-3430] = "fixed-version: Fixed from version 3.6rc1" + +CVE_STATUS[CVE-2012-3510] = "fixed-version: Fixed from version 2.6.19rc4" + +CVE_STATUS[CVE-2012-3511] = "fixed-version: Fixed from version 3.5rc6" + +CVE_STATUS[CVE-2012-3520] = "fixed-version: Fixed from version 3.6rc3" + +CVE_STATUS[CVE-2012-3552] = "fixed-version: Fixed from version 3.0rc1" + +# Skipping CVE-2012-4220, no affected_versions + +# Skipping CVE-2012-4221, no affected_versions + +# Skipping CVE-2012-4222, no affected_versions + +CVE_STATUS[CVE-2012-4398] = "fixed-version: Fixed from version 3.4rc1" + +CVE_STATUS[CVE-2012-4444] = "fixed-version: Fixed from version 2.6.36rc4" + +CVE_STATUS[CVE-2012-4461] = "fixed-version: Fixed from version 3.7rc6" + +CVE_STATUS[CVE-2012-4467] = "fixed-version: Fixed from version 3.6rc5" + +CVE_STATUS[CVE-2012-4508] = "fixed-version: Fixed from version 3.7rc3" + +CVE_STATUS[CVE-2012-4530] = "fixed-version: Fixed from version 3.8rc1" + +# CVE-2012-4542 has no known resolution + +CVE_STATUS[CVE-2012-4565] = "fixed-version: Fixed from version 3.7rc4" + +CVE_STATUS[CVE-2012-5374] = "fixed-version: Fixed from version 3.8rc1" + +CVE_STATUS[CVE-2012-5375] = "fixed-version: Fixed from version 3.8rc1" + +CVE_STATUS[CVE-2012-5517] = "fixed-version: Fixed from version 3.6rc1" + +CVE_STATUS[CVE-2012-6536] = "fixed-version: Fixed from version 3.6rc7" + +CVE_STATUS[CVE-2012-6537] = "fixed-version: Fixed from version 3.6rc7" + +CVE_STATUS[CVE-2012-6538] = "fixed-version: Fixed from version 3.6rc7" + +CVE_STATUS[CVE-2012-6539] = "fixed-version: Fixed from version 3.6rc3" + +CVE_STATUS[CVE-2012-6540] = "fixed-version: Fixed from version 3.6rc3" + +CVE_STATUS[CVE-2012-6541] = "fixed-version: Fixed from version 3.6rc3" + +CVE_STATUS[CVE-2012-6542] = "fixed-version: Fixed from version 3.6rc3" + +CVE_STATUS[CVE-2012-6543] = "fixed-version: Fixed from version 3.6rc3" + +CVE_STATUS[CVE-2012-6544] = "fixed-version: Fixed from version 3.6rc3" + +CVE_STATUS[CVE-2012-6545] = "fixed-version: Fixed from version 3.6rc3" + +CVE_STATUS[CVE-2012-6546] = "fixed-version: Fixed from version 3.6rc3" + +CVE_STATUS[CVE-2012-6547] = "fixed-version: Fixed from version 3.6rc1" + +CVE_STATUS[CVE-2012-6548] = "fixed-version: Fixed from version 3.6rc1" + +CVE_STATUS[CVE-2012-6549] = "fixed-version: Fixed from version 3.6rc1" + +CVE_STATUS[CVE-2012-6638] = "fixed-version: Fixed from version 3.3rc1" + +CVE_STATUS[CVE-2012-6647] = "fixed-version: Fixed from version 3.6rc2" + +CVE_STATUS[CVE-2012-6657] = "fixed-version: Fixed from version 3.6" + +CVE_STATUS[CVE-2012-6689] = "fixed-version: Fixed from version 3.6rc5" + +CVE_STATUS[CVE-2012-6701] = "fixed-version: Fixed from version 3.5rc1" + +CVE_STATUS[CVE-2012-6703] = "fixed-version: Fixed from version 3.7rc1" + +CVE_STATUS[CVE-2012-6704] = "fixed-version: Fixed from version 3.5rc1" + +CVE_STATUS[CVE-2012-6712] = "fixed-version: Fixed from version 3.4rc1" + +CVE_STATUS[CVE-2013-0160] = "fixed-version: Fixed from version 3.9rc1" + +CVE_STATUS[CVE-2013-0190] = "fixed-version: Fixed from version 3.8rc5" + +CVE_STATUS[CVE-2013-0216] = "fixed-version: Fixed from version 3.8rc7" + +CVE_STATUS[CVE-2013-0217] = "fixed-version: Fixed from version 3.8rc7" + +CVE_STATUS[CVE-2013-0228] = "fixed-version: Fixed from version 3.8" + +CVE_STATUS[CVE-2013-0231] = "fixed-version: Fixed from version 3.8rc7" + +CVE_STATUS[CVE-2013-0268] = "fixed-version: Fixed from version 3.8rc6" + +CVE_STATUS[CVE-2013-0290] = "fixed-version: Fixed from version 3.8" + +CVE_STATUS[CVE-2013-0309] = "fixed-version: Fixed from version 3.7rc1" + +CVE_STATUS[CVE-2013-0310] = "fixed-version: Fixed from version 3.5" + +CVE_STATUS[CVE-2013-0311] = "fixed-version: Fixed from version 3.7rc8" + +CVE_STATUS[CVE-2013-0313] = "fixed-version: Fixed from version 3.8rc5" + +CVE_STATUS[CVE-2013-0343] = "fixed-version: Fixed from version 3.11rc7" + +CVE_STATUS[CVE-2013-0349] = "fixed-version: Fixed from version 3.8rc6" + +CVE_STATUS[CVE-2013-0871] = "fixed-version: Fixed from version 3.8rc5" + +CVE_STATUS[CVE-2013-0913] = "fixed-version: Fixed from version 3.9rc4" + +CVE_STATUS[CVE-2013-0914] = "fixed-version: Fixed from version 3.9rc3" + +CVE_STATUS[CVE-2013-1059] = "fixed-version: Fixed from version 3.11rc1" + +CVE_STATUS[CVE-2013-1763] = "fixed-version: Fixed from version 3.9rc1" + +CVE_STATUS[CVE-2013-1767] = "fixed-version: Fixed from version 3.9rc1" + +CVE_STATUS[CVE-2013-1772] = "fixed-version: Fixed from version 3.5rc1" + +CVE_STATUS[CVE-2013-1773] = "fixed-version: Fixed from version 3.3rc1" + +CVE_STATUS[CVE-2013-1774] = "fixed-version: Fixed from version 3.8rc5" + +CVE_STATUS[CVE-2013-1792] = "fixed-version: Fixed from version 3.9rc3" + +CVE_STATUS[CVE-2013-1796] = "fixed-version: Fixed from version 3.9rc4" + +CVE_STATUS[CVE-2013-1797] = "fixed-version: Fixed from version 3.9rc4" + +CVE_STATUS[CVE-2013-1798] = "fixed-version: Fixed from version 3.9rc4" + +CVE_STATUS[CVE-2013-1819] = "fixed-version: Fixed from version 3.8rc6" + +CVE_STATUS[CVE-2013-1826] = "fixed-version: Fixed from version 3.6rc7" + +CVE_STATUS[CVE-2013-1827] = "fixed-version: Fixed from version 3.6rc3" + +CVE_STATUS[CVE-2013-1828] = "fixed-version: Fixed from version 3.9rc2" + +CVE_STATUS[CVE-2013-1848] = "fixed-version: Fixed from version 3.9rc3" + +CVE_STATUS[CVE-2013-1858] = "fixed-version: Fixed from version 3.9rc3" + +CVE_STATUS[CVE-2013-1860] = "fixed-version: Fixed from version 3.9rc3" + +CVE_STATUS[CVE-2013-1928] = "fixed-version: Fixed from version 3.7rc3" + +CVE_STATUS[CVE-2013-1929] = "fixed-version: Fixed from version 3.9rc6" + +# Skipping CVE-2013-1935, no affected_versions + +CVE_STATUS[CVE-2013-1943] = "fixed-version: Fixed from version 3.0rc1" + +CVE_STATUS[CVE-2013-1956] = "fixed-version: Fixed from version 3.9rc5" + +CVE_STATUS[CVE-2013-1957] = "fixed-version: Fixed from version 3.9rc5" + +CVE_STATUS[CVE-2013-1958] = "fixed-version: Fixed from version 3.9rc5" + +CVE_STATUS[CVE-2013-1959] = "fixed-version: Fixed from version 3.9rc7" + +CVE_STATUS[CVE-2013-1979] = "fixed-version: Fixed from version 3.9rc8" + +CVE_STATUS[CVE-2013-2015] = "fixed-version: Fixed from version 3.8rc2" + +CVE_STATUS[CVE-2013-2017] = "fixed-version: Fixed from version 2.6.34" + +CVE_STATUS[CVE-2013-2058] = "fixed-version: Fixed from version 3.8rc4" + +CVE_STATUS[CVE-2013-2094] = "fixed-version: Fixed from version 3.9rc8" + +CVE_STATUS[CVE-2013-2128] = "fixed-version: Fixed from version 2.6.34rc4" + +CVE_STATUS[CVE-2013-2140] = "fixed-version: Fixed from version 3.11rc3" + +CVE_STATUS[CVE-2013-2141] = "fixed-version: Fixed from version 3.9rc8" + +CVE_STATUS[CVE-2013-2146] = "fixed-version: Fixed from version 3.9rc8" + +CVE_STATUS[CVE-2013-2147] = "fixed-version: Fixed from version 3.12rc3" + +CVE_STATUS[CVE-2013-2148] = "fixed-version: Fixed from version 3.11rc1" + +CVE_STATUS[CVE-2013-2164] = "fixed-version: Fixed from version 3.11rc1" + +# Skipping CVE-2013-2188, no affected_versions + +CVE_STATUS[CVE-2013-2206] = "fixed-version: Fixed from version 3.9rc4" + +# Skipping CVE-2013-2224, no affected_versions + +CVE_STATUS[CVE-2013-2232] = "fixed-version: Fixed from version 3.10" + +CVE_STATUS[CVE-2013-2234] = "fixed-version: Fixed from version 3.10" + +CVE_STATUS[CVE-2013-2237] = "fixed-version: Fixed from version 3.9rc6" + +# Skipping CVE-2013-2239, no affected_versions + +CVE_STATUS[CVE-2013-2546] = "fixed-version: Fixed from version 3.9rc1" + +CVE_STATUS[CVE-2013-2547] = "fixed-version: Fixed from version 3.9rc1" + +CVE_STATUS[CVE-2013-2548] = "fixed-version: Fixed from version 3.9rc1" + +CVE_STATUS[CVE-2013-2596] = "fixed-version: Fixed from version 3.9rc8" + +CVE_STATUS[CVE-2013-2634] = "fixed-version: Fixed from version 3.9rc3" + +CVE_STATUS[CVE-2013-2635] = "fixed-version: Fixed from version 3.9rc3" + +CVE_STATUS[CVE-2013-2636] = "fixed-version: Fixed from version 3.9rc3" + +CVE_STATUS[CVE-2013-2850] = "fixed-version: Fixed from version 3.10rc4" + +CVE_STATUS[CVE-2013-2851] = "fixed-version: Fixed from version 3.11rc1" + +CVE_STATUS[CVE-2013-2852] = "fixed-version: Fixed from version 3.10rc6" + +CVE_STATUS[CVE-2013-2888] = "fixed-version: Fixed from version 3.12rc1" + +CVE_STATUS[CVE-2013-2889] = "fixed-version: Fixed from version 3.12rc2" + +CVE_STATUS[CVE-2013-2890] = "fixed-version: Fixed from version 3.12rc2" + +CVE_STATUS[CVE-2013-2891] = "fixed-version: Fixed from version 3.12rc2" + +CVE_STATUS[CVE-2013-2892] = "fixed-version: Fixed from version 3.12rc1" + +CVE_STATUS[CVE-2013-2893] = "fixed-version: Fixed from version 3.12rc2" + +CVE_STATUS[CVE-2013-2894] = "fixed-version: Fixed from version 3.12rc2" + +CVE_STATUS[CVE-2013-2895] = "fixed-version: Fixed from version 3.12rc2" + +CVE_STATUS[CVE-2013-2896] = "fixed-version: Fixed from version 3.12rc1" + +CVE_STATUS[CVE-2013-2897] = "fixed-version: Fixed from version 3.12rc2" + +CVE_STATUS[CVE-2013-2898] = "fixed-version: Fixed from version 3.12rc1" + +CVE_STATUS[CVE-2013-2899] = "fixed-version: Fixed from version 3.12rc1" + +CVE_STATUS[CVE-2013-2929] = "fixed-version: Fixed from version 3.13rc1" + +CVE_STATUS[CVE-2013-2930] = "fixed-version: Fixed from version 3.13rc1" + +CVE_STATUS[CVE-2013-3076] = "fixed-version: Fixed from version 3.9" + +CVE_STATUS[CVE-2013-3222] = "fixed-version: Fixed from version 3.9rc7" + +CVE_STATUS[CVE-2013-3223] = "fixed-version: Fixed from version 3.9rc7" + +CVE_STATUS[CVE-2013-3224] = "fixed-version: Fixed from version 3.9rc7" + +CVE_STATUS[CVE-2013-3225] = "fixed-version: Fixed from version 3.9rc7" + +CVE_STATUS[CVE-2013-3226] = "fixed-version: Fixed from version 3.9rc7" + +CVE_STATUS[CVE-2013-3227] = "fixed-version: Fixed from version 3.9rc7" + +CVE_STATUS[CVE-2013-3228] = "fixed-version: Fixed from version 3.9rc7" + +CVE_STATUS[CVE-2013-3229] = "fixed-version: Fixed from version 3.9rc7" + +CVE_STATUS[CVE-2013-3230] = "fixed-version: Fixed from version 3.9rc7" + +CVE_STATUS[CVE-2013-3231] = "fixed-version: Fixed from version 3.9rc7" + +CVE_STATUS[CVE-2013-3232] = "fixed-version: Fixed from version 3.9rc7" + +CVE_STATUS[CVE-2013-3233] = "fixed-version: Fixed from version 3.9rc7" + +CVE_STATUS[CVE-2013-3234] = "fixed-version: Fixed from version 3.9rc7" + +CVE_STATUS[CVE-2013-3235] = "fixed-version: Fixed from version 3.9rc7" + +CVE_STATUS[CVE-2013-3236] = "fixed-version: Fixed from version 3.9rc7" + +CVE_STATUS[CVE-2013-3237] = "fixed-version: Fixed from version 3.9rc7" + +CVE_STATUS[CVE-2013-3301] = "fixed-version: Fixed from version 3.9rc7" + +CVE_STATUS[CVE-2013-3302] = "fixed-version: Fixed from version 3.8rc3" + +CVE_STATUS[CVE-2013-4125] = "fixed-version: Fixed from version 3.11rc1" + +CVE_STATUS[CVE-2013-4127] = "fixed-version: Fixed from version 3.11rc1" + +CVE_STATUS[CVE-2013-4129] = "fixed-version: Fixed from version 3.11rc1" + +CVE_STATUS[CVE-2013-4162] = "fixed-version: Fixed from version 3.11rc1" + +CVE_STATUS[CVE-2013-4163] = "fixed-version: Fixed from version 3.11rc1" + +CVE_STATUS[CVE-2013-4205] = "fixed-version: Fixed from version 3.11rc5" + +CVE_STATUS[CVE-2013-4220] = "fixed-version: Fixed from version 3.10rc4" + +CVE_STATUS[CVE-2013-4247] = "fixed-version: Fixed from version 3.10rc5" + +CVE_STATUS[CVE-2013-4254] = "fixed-version: Fixed from version 3.11rc6" + +CVE_STATUS[CVE-2013-4270] = "fixed-version: Fixed from version 3.12rc4" + +CVE_STATUS[CVE-2013-4299] = "fixed-version: Fixed from version 3.12rc6" + +CVE_STATUS[CVE-2013-4300] = "fixed-version: Fixed from version 3.11" + +CVE_STATUS[CVE-2013-4312] = "fixed-version: Fixed from version 4.5rc1" + +CVE_STATUS[CVE-2013-4343] = "fixed-version: Fixed from version 3.12rc2" + +CVE_STATUS[CVE-2013-4345] = "fixed-version: Fixed from version 3.13rc2" + +CVE_STATUS[CVE-2013-4348] = "fixed-version: Fixed from version 3.13rc1" + +CVE_STATUS[CVE-2013-4350] = "fixed-version: Fixed from version 3.12rc2" + +CVE_STATUS[CVE-2013-4387] = "fixed-version: Fixed from version 3.12rc4" + +CVE_STATUS[CVE-2013-4470] = "fixed-version: Fixed from version 3.12rc7" + +CVE_STATUS[CVE-2013-4483] = "fixed-version: Fixed from version 3.10rc1" + +CVE_STATUS[CVE-2013-4511] = "fixed-version: Fixed from version 3.12" + +CVE_STATUS[CVE-2013-4512] = "fixed-version: Fixed from version 3.12" + +CVE_STATUS[CVE-2013-4513] = "fixed-version: Fixed from version 3.12" + +CVE_STATUS[CVE-2013-4514] = "fixed-version: Fixed from version 3.12" + +CVE_STATUS[CVE-2013-4515] = "fixed-version: Fixed from version 3.12" + +CVE_STATUS[CVE-2013-4516] = "fixed-version: Fixed from version 3.12" + +CVE_STATUS[CVE-2013-4563] = "fixed-version: Fixed from version 3.13rc1" + +CVE_STATUS[CVE-2013-4579] = "fixed-version: Fixed from version 3.13rc7" + +CVE_STATUS[CVE-2013-4587] = "fixed-version: Fixed from version 3.13rc4" + +CVE_STATUS[CVE-2013-4588] = "fixed-version: Fixed from version 2.6.33rc4" + +CVE_STATUS[CVE-2013-4591] = "fixed-version: Fixed from version 3.8rc1" + +CVE_STATUS[CVE-2013-4592] = "fixed-version: Fixed from version 3.7rc1" + +# Skipping CVE-2013-4737, no affected_versions + +# Skipping CVE-2013-4738, no affected_versions + +# Skipping CVE-2013-4739, no affected_versions + +CVE_STATUS[CVE-2013-5634] = "fixed-version: Fixed from version 3.10rc5" + +CVE_STATUS[CVE-2013-6282] = "fixed-version: Fixed from version 3.6rc6" + +CVE_STATUS[CVE-2013-6367] = "fixed-version: Fixed from version 3.13rc4" + +CVE_STATUS[CVE-2013-6368] = "fixed-version: Fixed from version 3.13rc4" + +CVE_STATUS[CVE-2013-6376] = "fixed-version: Fixed from version 3.13rc4" + +CVE_STATUS[CVE-2013-6378] = "fixed-version: Fixed from version 3.13rc1" + +CVE_STATUS[CVE-2013-6380] = "fixed-version: Fixed from version 3.13rc1" + +CVE_STATUS[CVE-2013-6381] = "fixed-version: Fixed from version 3.13rc1" + +CVE_STATUS[CVE-2013-6382] = "fixed-version: Fixed from version 3.13rc4" + +CVE_STATUS[CVE-2013-6383] = "fixed-version: Fixed from version 3.12" + +# Skipping CVE-2013-6392, no affected_versions + +CVE_STATUS[CVE-2013-6431] = "fixed-version: Fixed from version 3.12rc1" + +CVE_STATUS[CVE-2013-6432] = "fixed-version: Fixed from version 3.13rc1" + +CVE_STATUS[CVE-2013-6885] = "fixed-version: Fixed from version 3.14rc1" + +CVE_STATUS[CVE-2013-7026] = "fixed-version: Fixed from version 3.13rc1" + +CVE_STATUS[CVE-2013-7027] = "fixed-version: Fixed from version 3.12rc7" + +CVE_STATUS[CVE-2013-7263] = "fixed-version: Fixed from version 3.13rc1" + +CVE_STATUS[CVE-2013-7264] = "fixed-version: Fixed from version 3.13rc1" + +CVE_STATUS[CVE-2013-7265] = "fixed-version: Fixed from version 3.13rc1" + +CVE_STATUS[CVE-2013-7266] = "fixed-version: Fixed from version 3.13rc1" + +CVE_STATUS[CVE-2013-7267] = "fixed-version: Fixed from version 3.13rc1" + +CVE_STATUS[CVE-2013-7268] = "fixed-version: Fixed from version 3.13rc1" + +CVE_STATUS[CVE-2013-7269] = "fixed-version: Fixed from version 3.13rc1" + +CVE_STATUS[CVE-2013-7270] = "fixed-version: Fixed from version 3.13rc1" + +CVE_STATUS[CVE-2013-7271] = "fixed-version: Fixed from version 3.13rc1" + +CVE_STATUS[CVE-2013-7281] = "fixed-version: Fixed from version 3.13rc1" + +CVE_STATUS[CVE-2013-7339] = "fixed-version: Fixed from version 3.13rc7" + +CVE_STATUS[CVE-2013-7348] = "fixed-version: Fixed from version 3.13rc1" + +CVE_STATUS[CVE-2013-7421] = "fixed-version: Fixed from version 3.19rc1" + +# CVE-2013-7445 has no known resolution + +CVE_STATUS[CVE-2013-7446] = "fixed-version: Fixed from version 4.4rc4" + +CVE_STATUS[CVE-2013-7470] = "fixed-version: Fixed from version 3.12rc7" + +CVE_STATUS[CVE-2014-0038] = "fixed-version: Fixed from version 3.14rc1" + +CVE_STATUS[CVE-2014-0049] = "fixed-version: Fixed from version 3.14rc5" + +CVE_STATUS[CVE-2014-0055] = "fixed-version: Fixed from version 3.14" + +CVE_STATUS[CVE-2014-0069] = "fixed-version: Fixed from version 3.14rc4" + +CVE_STATUS[CVE-2014-0077] = "fixed-version: Fixed from version 3.14" + +CVE_STATUS[CVE-2014-0100] = "fixed-version: Fixed from version 3.14rc7" + +CVE_STATUS[CVE-2014-0101] = "fixed-version: Fixed from version 3.14rc6" + +CVE_STATUS[CVE-2014-0102] = "fixed-version: Fixed from version 3.14rc6" + +CVE_STATUS[CVE-2014-0131] = "fixed-version: Fixed from version 3.14rc7" + +CVE_STATUS[CVE-2014-0155] = "fixed-version: Fixed from version 3.15rc2" + +CVE_STATUS[CVE-2014-0181] = "fixed-version: Fixed from version 3.15rc5" + +CVE_STATUS[CVE-2014-0196] = "fixed-version: Fixed from version 3.15rc5" + +CVE_STATUS[CVE-2014-0203] = "fixed-version: Fixed from version 2.6.33rc5" + +CVE_STATUS[CVE-2014-0205] = "fixed-version: Fixed from version 2.6.37rc1" + +CVE_STATUS[CVE-2014-0206] = "fixed-version: Fixed from version 3.16rc3" + +# Skipping CVE-2014-0972, no affected_versions + +CVE_STATUS[CVE-2014-1438] = "fixed-version: Fixed from version 3.13" + +CVE_STATUS[CVE-2014-1444] = "fixed-version: Fixed from version 3.12rc7" + +CVE_STATUS[CVE-2014-1445] = "fixed-version: Fixed from version 3.12rc7" + +CVE_STATUS[CVE-2014-1446] = "fixed-version: Fixed from version 3.13rc7" + +CVE_STATUS[CVE-2014-1690] = "fixed-version: Fixed from version 3.13rc8" + +CVE_STATUS[CVE-2014-1737] = "fixed-version: Fixed from version 3.15rc5" + +CVE_STATUS[CVE-2014-1738] = "fixed-version: Fixed from version 3.15rc5" + +CVE_STATUS[CVE-2014-1739] = "fixed-version: Fixed from version 3.15rc6" + +CVE_STATUS[CVE-2014-1874] = "fixed-version: Fixed from version 3.14rc2" + +CVE_STATUS[CVE-2014-2038] = "fixed-version: Fixed from version 3.14rc1" + +CVE_STATUS[CVE-2014-2039] = "fixed-version: Fixed from version 3.14rc3" + +CVE_STATUS[CVE-2014-2309] = "fixed-version: Fixed from version 3.14rc7" + +CVE_STATUS[CVE-2014-2523] = "fixed-version: Fixed from version 3.14rc1" + +CVE_STATUS[CVE-2014-2568] = "fixed-version: Fixed from version 3.14" + +CVE_STATUS[CVE-2014-2580] = "fixed-version: Fixed from version 3.15rc1" + +CVE_STATUS[CVE-2014-2672] = "fixed-version: Fixed from version 3.14rc6" + +CVE_STATUS[CVE-2014-2673] = "fixed-version: Fixed from version 3.14rc6" + +CVE_STATUS[CVE-2014-2678] = "fixed-version: Fixed from version 3.15rc1" + +CVE_STATUS[CVE-2014-2706] = "fixed-version: Fixed from version 3.14rc6" + +CVE_STATUS[CVE-2014-2739] = "fixed-version: Fixed from version 3.15rc1" + +CVE_STATUS[CVE-2014-2851] = "fixed-version: Fixed from version 3.15rc2" + +CVE_STATUS[CVE-2014-2889] = "fixed-version: Fixed from version 3.2rc7" + +CVE_STATUS[CVE-2014-3122] = "fixed-version: Fixed from version 3.15rc1" + +CVE_STATUS[CVE-2014-3144] = "fixed-version: Fixed from version 3.15rc2" + +CVE_STATUS[CVE-2014-3145] = "fixed-version: Fixed from version 3.15rc2" + +CVE_STATUS[CVE-2014-3153] = "fixed-version: Fixed from version 3.15" + +CVE_STATUS[CVE-2014-3180] = "fixed-version: Fixed from version 3.17rc4" + +CVE_STATUS[CVE-2014-3181] = "fixed-version: Fixed from version 3.17rc3" + +CVE_STATUS[CVE-2014-3182] = "fixed-version: Fixed from version 3.17rc2" + +CVE_STATUS[CVE-2014-3183] = "fixed-version: Fixed from version 3.17rc2" + +CVE_STATUS[CVE-2014-3184] = "fixed-version: Fixed from version 3.17rc2" + +CVE_STATUS[CVE-2014-3185] = "fixed-version: Fixed from version 3.17rc3" + +CVE_STATUS[CVE-2014-3186] = "fixed-version: Fixed from version 3.17rc3" + +# Skipping CVE-2014-3519, no affected_versions + +CVE_STATUS[CVE-2014-3534] = "fixed-version: Fixed from version 3.16rc7" + +CVE_STATUS[CVE-2014-3535] = "fixed-version: Fixed from version 2.6.36rc1" + +CVE_STATUS[CVE-2014-3601] = "fixed-version: Fixed from version 3.17rc2" + +CVE_STATUS[CVE-2014-3610] = "fixed-version: Fixed from version 3.18rc2" + +CVE_STATUS[CVE-2014-3611] = "fixed-version: Fixed from version 3.18rc2" + +CVE_STATUS[CVE-2014-3631] = "fixed-version: Fixed from version 3.17rc5" + +CVE_STATUS[CVE-2014-3645] = "fixed-version: Fixed from version 3.12rc1" + +CVE_STATUS[CVE-2014-3646] = "fixed-version: Fixed from version 3.18rc2" + +CVE_STATUS[CVE-2014-3647] = "fixed-version: Fixed from version 3.18rc2" + +CVE_STATUS[CVE-2014-3673] = "fixed-version: Fixed from version 3.18rc1" + +CVE_STATUS[CVE-2014-3687] = "fixed-version: Fixed from version 3.18rc1" + +CVE_STATUS[CVE-2014-3688] = "fixed-version: Fixed from version 3.18rc1" + +CVE_STATUS[CVE-2014-3690] = "fixed-version: Fixed from version 3.18rc1" + +CVE_STATUS[CVE-2014-3917] = "fixed-version: Fixed from version 3.16rc1" + +CVE_STATUS[CVE-2014-3940] = "fixed-version: Fixed from version 3.15" + +CVE_STATUS[CVE-2014-4014] = "fixed-version: Fixed from version 3.16rc1" + +CVE_STATUS[CVE-2014-4027] = "fixed-version: Fixed from version 3.14rc1" + +CVE_STATUS[CVE-2014-4157] = "fixed-version: Fixed from version 3.15rc1" + +CVE_STATUS[CVE-2014-4171] = "fixed-version: Fixed from version 3.16rc3" + +# Skipping CVE-2014-4322, no affected_versions + +# Skipping CVE-2014-4323, no affected_versions + +CVE_STATUS[CVE-2014-4508] = "fixed-version: Fixed from version 3.16rc3" + +CVE_STATUS[CVE-2014-4608] = "fixed-version: Fixed from version 3.18rc1" + +CVE_STATUS[CVE-2014-4611] = "fixed-version: Fixed from version 3.16rc3" + +CVE_STATUS[CVE-2014-4652] = "fixed-version: Fixed from version 3.16rc2" + +CVE_STATUS[CVE-2014-4653] = "fixed-version: Fixed from version 3.16rc2" + +CVE_STATUS[CVE-2014-4654] = "fixed-version: Fixed from version 3.16rc2" + +CVE_STATUS[CVE-2014-4655] = "fixed-version: Fixed from version 3.16rc2" + +CVE_STATUS[CVE-2014-4656] = "fixed-version: Fixed from version 3.16rc2" + +CVE_STATUS[CVE-2014-4667] = "fixed-version: Fixed from version 3.16rc1" + +CVE_STATUS[CVE-2014-4699] = "fixed-version: Fixed from version 3.16rc4" + +CVE_STATUS[CVE-2014-4943] = "fixed-version: Fixed from version 3.16rc6" + +CVE_STATUS[CVE-2014-5045] = "fixed-version: Fixed from version 3.16rc7" + +CVE_STATUS[CVE-2014-5077] = "fixed-version: Fixed from version 3.16" + +CVE_STATUS[CVE-2014-5206] = "fixed-version: Fixed from version 3.17rc1" + +CVE_STATUS[CVE-2014-5207] = "fixed-version: Fixed from version 3.17rc1" + +# Skipping CVE-2014-5332, no affected_versions + +CVE_STATUS[CVE-2014-5471] = "fixed-version: Fixed from version 3.17rc2" + +CVE_STATUS[CVE-2014-5472] = "fixed-version: Fixed from version 3.17rc2" + +CVE_STATUS[CVE-2014-6410] = "fixed-version: Fixed from version 3.17rc5" + +CVE_STATUS[CVE-2014-6416] = "fixed-version: Fixed from version 3.17rc5" + +CVE_STATUS[CVE-2014-6417] = "fixed-version: Fixed from version 3.17rc5" + +CVE_STATUS[CVE-2014-6418] = "fixed-version: Fixed from version 3.17rc5" + +CVE_STATUS[CVE-2014-7145] = "fixed-version: Fixed from version 3.17rc2" + +# Skipping CVE-2014-7207, no affected_versions + +CVE_STATUS[CVE-2014-7283] = "fixed-version: Fixed from version 3.15rc1" + +CVE_STATUS[CVE-2014-7284] = "fixed-version: Fixed from version 3.15rc7" + +CVE_STATUS[CVE-2014-7822] = "fixed-version: Fixed from version 3.16rc1" + +CVE_STATUS[CVE-2014-7825] = "fixed-version: Fixed from version 3.18rc3" + +CVE_STATUS[CVE-2014-7826] = "fixed-version: Fixed from version 3.18rc3" + +CVE_STATUS[CVE-2014-7841] = "fixed-version: Fixed from version 3.18rc5" + +CVE_STATUS[CVE-2014-7842] = "fixed-version: Fixed from version 3.18rc1" + +CVE_STATUS[CVE-2014-7843] = "fixed-version: Fixed from version 3.18rc5" + +CVE_STATUS[CVE-2014-7970] = "fixed-version: Fixed from version 3.18rc1" + +CVE_STATUS[CVE-2014-7975] = "fixed-version: Fixed from version 3.18rc1" + +CVE_STATUS[CVE-2014-8086] = "fixed-version: Fixed from version 3.18rc3" + +CVE_STATUS[CVE-2014-8133] = "fixed-version: Fixed from version 3.19rc1" + +CVE_STATUS[CVE-2014-8134] = "fixed-version: Fixed from version 3.19rc1" + +CVE_STATUS[CVE-2014-8159] = "fixed-version: Fixed from version 4.0rc7" + +CVE_STATUS[CVE-2014-8160] = "fixed-version: Fixed from version 3.18rc1" + +CVE_STATUS[CVE-2014-8171] = "fixed-version: Fixed from version 3.12rc1" + +CVE_STATUS[CVE-2014-8172] = "fixed-version: Fixed from version 3.13rc1" + +CVE_STATUS[CVE-2014-8173] = "fixed-version: Fixed from version 3.13rc5" + +# Skipping CVE-2014-8181, no affected_versions + +CVE_STATUS[CVE-2014-8369] = "fixed-version: Fixed from version 3.18rc2" + +CVE_STATUS[CVE-2014-8480] = "fixed-version: Fixed from version 3.18rc2" + +CVE_STATUS[CVE-2014-8481] = "fixed-version: Fixed from version 3.18rc2" + +CVE_STATUS[CVE-2014-8559] = "fixed-version: Fixed from version 3.19rc1" + +CVE_STATUS[CVE-2014-8709] = "fixed-version: Fixed from version 3.14rc3" + +CVE_STATUS[CVE-2014-8884] = "fixed-version: Fixed from version 3.18rc1" + +CVE_STATUS[CVE-2014-8989] = "fixed-version: Fixed from version 3.19rc1" + +CVE_STATUS[CVE-2014-9090] = "fixed-version: Fixed from version 3.18rc6" + +CVE_STATUS[CVE-2014-9322] = "fixed-version: Fixed from version 3.18rc6" + +CVE_STATUS[CVE-2014-9419] = "fixed-version: Fixed from version 3.19rc1" + +CVE_STATUS[CVE-2014-9420] = "fixed-version: Fixed from version 3.19rc1" + +CVE_STATUS[CVE-2014-9428] = "fixed-version: Fixed from version 3.19rc3" + +CVE_STATUS[CVE-2014-9529] = "fixed-version: Fixed from version 3.19rc4" + +CVE_STATUS[CVE-2014-9584] = "fixed-version: Fixed from version 3.19rc3" + +CVE_STATUS[CVE-2014-9585] = "fixed-version: Fixed from version 3.19rc4" + +CVE_STATUS[CVE-2014-9644] = "fixed-version: Fixed from version 3.19rc1" + +CVE_STATUS[CVE-2014-9683] = "fixed-version: Fixed from version 3.19rc1" + +CVE_STATUS[CVE-2014-9710] = "fixed-version: Fixed from version 3.19rc1" + +CVE_STATUS[CVE-2014-9715] = "fixed-version: Fixed from version 3.15rc1" + +CVE_STATUS[CVE-2014-9717] = "fixed-version: Fixed from version 4.1rc1" + +CVE_STATUS[CVE-2014-9728] = "fixed-version: Fixed from version 3.19rc3" + +CVE_STATUS[CVE-2014-9729] = "fixed-version: Fixed from version 3.19rc3" + +CVE_STATUS[CVE-2014-9730] = "fixed-version: Fixed from version 3.19rc3" + +CVE_STATUS[CVE-2014-9731] = "fixed-version: Fixed from version 3.19rc3" + +# Skipping CVE-2014-9777, no affected_versions + +# Skipping CVE-2014-9778, no affected_versions + +# Skipping CVE-2014-9779, no affected_versions + +# Skipping CVE-2014-9780, no affected_versions + +# Skipping CVE-2014-9781, no affected_versions + +# Skipping CVE-2014-9782, no affected_versions + +# Skipping CVE-2014-9783, no affected_versions + +# Skipping CVE-2014-9784, no affected_versions + +# Skipping CVE-2014-9785, no affected_versions + +# Skipping CVE-2014-9786, no affected_versions + +# Skipping CVE-2014-9787, no affected_versions + +# Skipping CVE-2014-9788, no affected_versions + +# Skipping CVE-2014-9789, no affected_versions + +CVE_STATUS[CVE-2014-9803] = "fixed-version: Fixed from version 3.16rc1" + +# Skipping CVE-2014-9863, no affected_versions + +# Skipping CVE-2014-9864, no affected_versions + +# Skipping CVE-2014-9865, no affected_versions + +# Skipping CVE-2014-9866, no affected_versions + +# Skipping CVE-2014-9867, no affected_versions + +# Skipping CVE-2014-9868, no affected_versions + +# Skipping CVE-2014-9869, no affected_versions + +CVE_STATUS[CVE-2014-9870] = "fixed-version: Fixed from version 3.11rc1" + +# Skipping CVE-2014-9871, no affected_versions + +# Skipping CVE-2014-9872, no affected_versions + +# Skipping CVE-2014-9873, no affected_versions + +# Skipping CVE-2014-9874, no affected_versions + +# Skipping CVE-2014-9875, no affected_versions + +# Skipping CVE-2014-9876, no affected_versions + +# Skipping CVE-2014-9877, no affected_versions + +# Skipping CVE-2014-9878, no affected_versions + +# Skipping CVE-2014-9879, no affected_versions + +# Skipping CVE-2014-9880, no affected_versions + +# Skipping CVE-2014-9881, no affected_versions + +# Skipping CVE-2014-9882, no affected_versions + +# Skipping CVE-2014-9883, no affected_versions + +# Skipping CVE-2014-9884, no affected_versions + +# Skipping CVE-2014-9885, no affected_versions + +# Skipping CVE-2014-9886, no affected_versions + +# Skipping CVE-2014-9887, no affected_versions + +CVE_STATUS[CVE-2014-9888] = "fixed-version: Fixed from version 3.13rc1" + +# Skipping CVE-2014-9889, no affected_versions + +# Skipping CVE-2014-9890, no affected_versions + +# Skipping CVE-2014-9891, no affected_versions + +# Skipping CVE-2014-9892, no affected_versions + +# Skipping CVE-2014-9893, no affected_versions + +# Skipping CVE-2014-9894, no affected_versions + +CVE_STATUS[CVE-2014-9895] = "fixed-version: Fixed from version 3.11rc1" + +# Skipping CVE-2014-9896, no affected_versions + +# Skipping CVE-2014-9897, no affected_versions + +# Skipping CVE-2014-9898, no affected_versions + +# Skipping CVE-2014-9899, no affected_versions + +# Skipping CVE-2014-9900, no affected_versions + +CVE_STATUS[CVE-2014-9903] = "fixed-version: Fixed from version 3.14rc4" + +CVE_STATUS[CVE-2014-9904] = "fixed-version: Fixed from version 3.17rc1" + +CVE_STATUS[CVE-2014-9914] = "fixed-version: Fixed from version 3.16rc1" + +CVE_STATUS[CVE-2014-9922] = "fixed-version: Fixed from version 3.18rc2" + +CVE_STATUS[CVE-2014-9940] = "fixed-version: Fixed from version 3.19rc1" + +CVE_STATUS[CVE-2015-0239] = "fixed-version: Fixed from version 3.19rc6" + +CVE_STATUS[CVE-2015-0274] = "fixed-version: Fixed from version 3.15rc5" + +CVE_STATUS[CVE-2015-0275] = "fixed-version: Fixed from version 4.1rc1" + +# Skipping CVE-2015-0777, no affected_versions + +# Skipping CVE-2015-1328, no affected_versions + +CVE_STATUS[CVE-2015-1333] = "fixed-version: Fixed from version 4.2rc5" + +CVE_STATUS[CVE-2015-1339] = "fixed-version: Fixed from version 4.4rc5" + +CVE_STATUS[CVE-2015-1350] = "fixed-version: Fixed from version 4.9rc1" + +CVE_STATUS[CVE-2015-1420] = "fixed-version: Fixed from version 4.1rc7" + +CVE_STATUS[CVE-2015-1421] = "fixed-version: Fixed from version 3.19rc7" + +CVE_STATUS[CVE-2015-1465] = "fixed-version: Fixed from version 3.19rc7" + +CVE_STATUS[CVE-2015-1573] = "fixed-version: Fixed from version 3.19rc5" + +CVE_STATUS[CVE-2015-1593] = "fixed-version: Fixed from version 4.0rc1" + +CVE_STATUS[CVE-2015-1805] = "fixed-version: Fixed from version 3.16rc1" + +CVE_STATUS[CVE-2015-2041] = "fixed-version: Fixed from version 3.19rc7" + +CVE_STATUS[CVE-2015-2042] = "fixed-version: Fixed from version 3.19" + +CVE_STATUS[CVE-2015-2150] = "fixed-version: Fixed from version 4.0rc4" + +CVE_STATUS[CVE-2015-2666] = "fixed-version: Fixed from version 4.0rc1" + +CVE_STATUS[CVE-2015-2672] = "fixed-version: Fixed from version 4.0rc3" + +CVE_STATUS[CVE-2015-2686] = "fixed-version: Fixed from version 4.0rc6" + +CVE_STATUS[CVE-2015-2830] = "fixed-version: Fixed from version 4.0rc3" + +# CVE-2015-2877 has no known resolution + +CVE_STATUS[CVE-2015-2922] = "fixed-version: Fixed from version 4.0rc7" + +CVE_STATUS[CVE-2015-2925] = "fixed-version: Fixed from version 4.3rc1" + +CVE_STATUS[CVE-2015-3212] = "fixed-version: Fixed from version 4.2rc1" + +CVE_STATUS[CVE-2015-3214] = "fixed-version: Fixed from version 2.6.33rc8" + +CVE_STATUS[CVE-2015-3288] = "fixed-version: Fixed from version 4.2rc2" + +CVE_STATUS[CVE-2015-3290] = "fixed-version: Fixed from version 4.2rc3" + +CVE_STATUS[CVE-2015-3291] = "fixed-version: Fixed from version 4.2rc3" + +CVE_STATUS[CVE-2015-3331] = "fixed-version: Fixed from version 4.0rc5" + +# Skipping CVE-2015-3332, no affected_versions + +CVE_STATUS[CVE-2015-3339] = "fixed-version: Fixed from version 4.1rc1" + +CVE_STATUS[CVE-2015-3636] = "fixed-version: Fixed from version 4.1rc2" + +CVE_STATUS[CVE-2015-4001] = "fixed-version: Fixed from version 4.1rc7" + +CVE_STATUS[CVE-2015-4002] = "fixed-version: Fixed from version 4.1rc7" + +CVE_STATUS[CVE-2015-4003] = "fixed-version: Fixed from version 4.1rc7" + +CVE_STATUS[CVE-2015-4004] = "fixed-version: Fixed from version 4.3rc1" + +CVE_STATUS[CVE-2015-4036] = "fixed-version: Fixed from version 4.0rc1" + +CVE_STATUS[CVE-2015-4167] = "fixed-version: Fixed from version 4.0rc1" + +CVE_STATUS[CVE-2015-4170] = "fixed-version: Fixed from version 3.13rc5" + +CVE_STATUS[CVE-2015-4176] = "fixed-version: Fixed from version 4.1rc1" + +CVE_STATUS[CVE-2015-4177] = "fixed-version: Fixed from version 4.1rc1" + +CVE_STATUS[CVE-2015-4178] = "fixed-version: Fixed from version 4.1rc1" + +CVE_STATUS[CVE-2015-4692] = "fixed-version: Fixed from version 4.2rc1" + +CVE_STATUS[CVE-2015-4700] = "fixed-version: Fixed from version 4.1rc6" + +CVE_STATUS[CVE-2015-5156] = "fixed-version: Fixed from version 4.2rc7" + +CVE_STATUS[CVE-2015-5157] = "fixed-version: Fixed from version 4.2rc3" + +CVE_STATUS[CVE-2015-5257] = "fixed-version: Fixed from version 4.3rc3" + +CVE_STATUS[CVE-2015-5283] = "fixed-version: Fixed from version 4.3rc3" + +CVE_STATUS[CVE-2015-5307] = "fixed-version: Fixed from version 4.4rc1" + +CVE_STATUS[CVE-2015-5327] = "fixed-version: Fixed from version 4.4rc1" + +CVE_STATUS[CVE-2015-5364] = "fixed-version: Fixed from version 4.1rc7" + +CVE_STATUS[CVE-2015-5366] = "fixed-version: Fixed from version 4.1rc7" + +CVE_STATUS[CVE-2015-5697] = "fixed-version: Fixed from version 4.2rc6" + +CVE_STATUS[CVE-2015-5706] = "fixed-version: Fixed from version 4.1rc3" + +CVE_STATUS[CVE-2015-5707] = "fixed-version: Fixed from version 4.1rc1" + +CVE_STATUS[CVE-2015-6252] = "fixed-version: Fixed from version 4.2rc5" + +CVE_STATUS[CVE-2015-6526] = "fixed-version: Fixed from version 4.1rc1" + +# CVE-2015-6619 has no known resolution + +# CVE-2015-6646 has no known resolution + +CVE_STATUS[CVE-2015-6937] = "fixed-version: Fixed from version 4.3rc1" + +# Skipping CVE-2015-7312, no affected_versions + +CVE_STATUS[CVE-2015-7509] = "fixed-version: Fixed from version 3.7rc1" + +CVE_STATUS[CVE-2015-7513] = "fixed-version: Fixed from version 4.4rc7" + +CVE_STATUS[CVE-2015-7515] = "fixed-version: Fixed from version 4.4rc6" + +CVE_STATUS[CVE-2015-7550] = "fixed-version: Fixed from version 4.4rc8" + +# Skipping CVE-2015-7553, no affected_versions + +CVE_STATUS[CVE-2015-7566] = "fixed-version: Fixed from version 4.5rc2" + +CVE_STATUS[CVE-2015-7613] = "fixed-version: Fixed from version 4.3rc4" + +CVE_STATUS[CVE-2015-7799] = "fixed-version: Fixed from version 4.4rc1" + +CVE_STATUS[CVE-2015-7833] = "fixed-version: Fixed from version 4.6rc6" + +# Skipping CVE-2015-7837, no affected_versions + +CVE_STATUS[CVE-2015-7872] = "fixed-version: Fixed from version 4.3rc7" + +CVE_STATUS[CVE-2015-7884] = "fixed-version: Fixed from version 4.4rc1" + +CVE_STATUS[CVE-2015-7885] = "fixed-version: Fixed from version 4.4rc1" + +CVE_STATUS[CVE-2015-7990] = "fixed-version: Fixed from version 4.4rc4" + +# Skipping CVE-2015-8019, no affected_versions + +CVE_STATUS[CVE-2015-8104] = "fixed-version: Fixed from version 4.4rc1" + +CVE_STATUS[CVE-2015-8215] = "fixed-version: Fixed from version 4.0rc3" + +CVE_STATUS[CVE-2015-8324] = "fixed-version: Fixed from version 2.6.34rc1" + +CVE_STATUS[CVE-2015-8374] = "fixed-version: Fixed from version 4.4rc1" + +CVE_STATUS[CVE-2015-8539] = "fixed-version: Fixed from version 4.4rc3" + +CVE_STATUS[CVE-2015-8543] = "fixed-version: Fixed from version 4.4rc6" + +CVE_STATUS[CVE-2015-8550] = "fixed-version: Fixed from version 4.4rc6" + +CVE_STATUS[CVE-2015-8551] = "fixed-version: Fixed from version 4.4rc6" + +CVE_STATUS[CVE-2015-8552] = "fixed-version: Fixed from version 4.4rc6" + +CVE_STATUS[CVE-2015-8553] = "fixed-version: Fixed from version 4.4rc6" + +CVE_STATUS[CVE-2015-8569] = "fixed-version: Fixed from version 4.4rc6" + +CVE_STATUS[CVE-2015-8575] = "fixed-version: Fixed from version 4.4rc6" + +CVE_STATUS[CVE-2015-8660] = "fixed-version: Fixed from version 4.4rc4" + +CVE_STATUS[CVE-2015-8709] = "fixed-version: Fixed from version 4.10rc1" + +CVE_STATUS[CVE-2015-8746] = "fixed-version: Fixed from version 4.3rc1" + +CVE_STATUS[CVE-2015-8767] = "fixed-version: Fixed from version 4.3rc4" + +CVE_STATUS[CVE-2015-8785] = "fixed-version: Fixed from version 4.4rc5" + +CVE_STATUS[CVE-2015-8787] = "fixed-version: Fixed from version 4.4rc1" + +CVE_STATUS[CVE-2015-8812] = "fixed-version: Fixed from version 4.5rc1" + +CVE_STATUS[CVE-2015-8816] = "fixed-version: Fixed from version 4.4rc6" + +CVE_STATUS[CVE-2015-8830] = "fixed-version: Fixed from version 4.1rc1" + +CVE_STATUS[CVE-2015-8839] = "fixed-version: Fixed from version 4.5rc1" + +CVE_STATUS[CVE-2015-8844] = "fixed-version: Fixed from version 4.4rc3" + +CVE_STATUS[CVE-2015-8845] = "fixed-version: Fixed from version 4.4rc3" + +# Skipping CVE-2015-8937, no affected_versions + +# Skipping CVE-2015-8938, no affected_versions + +# Skipping CVE-2015-8939, no affected_versions + +# Skipping CVE-2015-8940, no affected_versions + +# Skipping CVE-2015-8941, no affected_versions + +# Skipping CVE-2015-8942, no affected_versions + +# Skipping CVE-2015-8943, no affected_versions + +# Skipping CVE-2015-8944, no affected_versions + +CVE_STATUS[CVE-2015-8950] = "fixed-version: Fixed from version 4.1rc2" + +CVE_STATUS[CVE-2015-8952] = "fixed-version: Fixed from version 4.6rc1" + +CVE_STATUS[CVE-2015-8953] = "fixed-version: Fixed from version 4.3" + +CVE_STATUS[CVE-2015-8955] = "fixed-version: Fixed from version 4.1rc1" + +CVE_STATUS[CVE-2015-8956] = "fixed-version: Fixed from version 4.2rc1" + +CVE_STATUS[CVE-2015-8961] = "fixed-version: Fixed from version 4.4rc1" + +CVE_STATUS[CVE-2015-8962] = "fixed-version: Fixed from version 4.4rc1" + +CVE_STATUS[CVE-2015-8963] = "fixed-version: Fixed from version 4.4" + +CVE_STATUS[CVE-2015-8964] = "fixed-version: Fixed from version 4.5rc1" + +CVE_STATUS[CVE-2015-8966] = "fixed-version: Fixed from version 4.4rc8" + +CVE_STATUS[CVE-2015-8967] = "fixed-version: Fixed from version 4.0rc1" + +CVE_STATUS[CVE-2015-8970] = "fixed-version: Fixed from version 4.5rc1" + +CVE_STATUS[CVE-2015-9004] = "fixed-version: Fixed from version 3.19rc7" + +CVE_STATUS[CVE-2015-9016] = "fixed-version: Fixed from version 4.3rc1" + +CVE_STATUS[CVE-2015-9289] = "fixed-version: Fixed from version 4.2rc1" + +CVE_STATUS[CVE-2016-0617] = "fixed-version: Fixed from version 4.5rc1" + +CVE_STATUS[CVE-2016-0723] = "fixed-version: Fixed from version 4.5rc2" + +CVE_STATUS[CVE-2016-0728] = "fixed-version: Fixed from version 4.5rc1" + +CVE_STATUS[CVE-2016-0758] = "fixed-version: Fixed from version 4.6" + +# Skipping CVE-2016-0774, no affected_versions + +CVE_STATUS[CVE-2016-0821] = "fixed-version: Fixed from version 4.3rc1" + +CVE_STATUS[CVE-2016-0823] = "fixed-version: Fixed from version 4.0rc5" + +CVE_STATUS[CVE-2016-10044] = "fixed-version: Fixed from version 4.8rc7" + +CVE_STATUS[CVE-2016-10088] = "fixed-version: Fixed from version 4.10rc1" + +CVE_STATUS[CVE-2016-10147] = "fixed-version: Fixed from version 4.9" + +CVE_STATUS[CVE-2016-10150] = "fixed-version: Fixed from version 4.9rc8" + +CVE_STATUS[CVE-2016-10153] = "fixed-version: Fixed from version 4.10rc1" + +CVE_STATUS[CVE-2016-10154] = "fixed-version: Fixed from version 4.10rc1" + +CVE_STATUS[CVE-2016-10200] = "fixed-version: Fixed from version 4.9rc7" + +CVE_STATUS[CVE-2016-10208] = "fixed-version: Fixed from version 4.10rc1" + +CVE_STATUS[CVE-2016-10229] = "fixed-version: Fixed from version 4.5rc1" + +CVE_STATUS[CVE-2016-10318] = "fixed-version: Fixed from version 4.8rc6" + +CVE_STATUS[CVE-2016-10723] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2016-10741] = "fixed-version: Fixed from version 4.10rc1" + +CVE_STATUS[CVE-2016-10764] = "fixed-version: Fixed from version 4.10rc1" + +CVE_STATUS[CVE-2016-10905] = "fixed-version: Fixed from version 4.8rc1" + +CVE_STATUS[CVE-2016-10906] = "fixed-version: Fixed from version 4.5rc6" + +CVE_STATUS[CVE-2016-10907] = "fixed-version: Fixed from version 4.9rc1" + +CVE_STATUS[CVE-2016-1237] = "fixed-version: Fixed from version 4.7rc5" + +CVE_STATUS[CVE-2016-1575] = "fixed-version: Fixed from version 4.5rc1" + +CVE_STATUS[CVE-2016-1576] = "fixed-version: Fixed from version 4.5rc1" + +CVE_STATUS[CVE-2016-1583] = "fixed-version: Fixed from version 4.7rc3" + +CVE_STATUS[CVE-2016-2053] = "fixed-version: Fixed from version 4.3rc1" + +CVE_STATUS[CVE-2016-2069] = "fixed-version: Fixed from version 4.5rc1" + +CVE_STATUS[CVE-2016-2070] = "fixed-version: Fixed from version 4.4" + +CVE_STATUS[CVE-2016-2085] = "fixed-version: Fixed from version 4.5rc4" + +CVE_STATUS[CVE-2016-2117] = "fixed-version: Fixed from version 4.6rc5" + +CVE_STATUS[CVE-2016-2143] = "fixed-version: Fixed from version 4.5" + +CVE_STATUS[CVE-2016-2184] = "fixed-version: Fixed from version 4.6rc1" + +CVE_STATUS[CVE-2016-2185] = "fixed-version: Fixed from version 4.6rc1" + +CVE_STATUS[CVE-2016-2186] = "fixed-version: Fixed from version 4.6rc1" + +CVE_STATUS[CVE-2016-2187] = "fixed-version: Fixed from version 4.6rc5" + +CVE_STATUS[CVE-2016-2188] = "fixed-version: Fixed from version 4.11rc2" + +CVE_STATUS[CVE-2016-2383] = "fixed-version: Fixed from version 4.5rc4" + +CVE_STATUS[CVE-2016-2384] = "fixed-version: Fixed from version 4.5rc4" + +CVE_STATUS[CVE-2016-2543] = "fixed-version: Fixed from version 4.5rc1" + +CVE_STATUS[CVE-2016-2544] = "fixed-version: Fixed from version 4.5rc1" + +CVE_STATUS[CVE-2016-2545] = "fixed-version: Fixed from version 4.5rc1" + +CVE_STATUS[CVE-2016-2546] = "fixed-version: Fixed from version 4.5rc1" + +CVE_STATUS[CVE-2016-2547] = "fixed-version: Fixed from version 4.5rc1" + +CVE_STATUS[CVE-2016-2548] = "fixed-version: Fixed from version 4.5rc1" + +CVE_STATUS[CVE-2016-2549] = "fixed-version: Fixed from version 4.5rc1" + +CVE_STATUS[CVE-2016-2550] = "fixed-version: Fixed from version 4.5rc4" + +CVE_STATUS[CVE-2016-2782] = "fixed-version: Fixed from version 4.5rc2" + +CVE_STATUS[CVE-2016-2847] = "fixed-version: Fixed from version 4.5rc1" + +# Skipping CVE-2016-2853, no affected_versions + +# Skipping CVE-2016-2854, no affected_versions + +CVE_STATUS[CVE-2016-3044] = "fixed-version: Fixed from version 4.5" + +CVE_STATUS[CVE-2016-3070] = "fixed-version: Fixed from version 4.4rc1" + +CVE_STATUS[CVE-2016-3134] = "fixed-version: Fixed from version 4.6rc2" + +CVE_STATUS[CVE-2016-3135] = "fixed-version: Fixed from version 4.6rc1" + +CVE_STATUS[CVE-2016-3136] = "fixed-version: Fixed from version 4.6rc3" + +CVE_STATUS[CVE-2016-3137] = "fixed-version: Fixed from version 4.6rc3" + +CVE_STATUS[CVE-2016-3138] = "fixed-version: Fixed from version 4.6rc1" + +CVE_STATUS[CVE-2016-3139] = "fixed-version: Fixed from version 3.17rc1" + +CVE_STATUS[CVE-2016-3140] = "fixed-version: Fixed from version 4.6rc3" + +CVE_STATUS[CVE-2016-3156] = "fixed-version: Fixed from version 4.6rc1" + +CVE_STATUS[CVE-2016-3157] = "fixed-version: Fixed from version 4.6rc1" + +CVE_STATUS[CVE-2016-3672] = "fixed-version: Fixed from version 4.6rc1" + +CVE_STATUS[CVE-2016-3689] = "fixed-version: Fixed from version 4.6rc1" + +# Skipping CVE-2016-3695, no affected_versions + +# Skipping CVE-2016-3699, no affected_versions + +# Skipping CVE-2016-3707, no affected_versions + +CVE_STATUS[CVE-2016-3713] = "fixed-version: Fixed from version 4.7rc1" + +# CVE-2016-3775 has no known resolution + +# CVE-2016-3802 has no known resolution + +# CVE-2016-3803 has no known resolution + +CVE_STATUS[CVE-2016-3841] = "fixed-version: Fixed from version 4.4rc4" + +CVE_STATUS[CVE-2016-3857] = "fixed-version: Fixed from version 4.8rc2" + +CVE_STATUS[CVE-2016-3951] = "fixed-version: Fixed from version 4.5" + +CVE_STATUS[CVE-2016-3955] = "fixed-version: Fixed from version 4.6rc3" + +CVE_STATUS[CVE-2016-3961] = "fixed-version: Fixed from version 4.6rc5" + +CVE_STATUS[CVE-2016-4440] = "fixed-version: Fixed from version 4.7rc1" + +CVE_STATUS[CVE-2016-4470] = "fixed-version: Fixed from version 4.7rc4" + +CVE_STATUS[CVE-2016-4482] = "fixed-version: Fixed from version 4.7rc1" + +CVE_STATUS[CVE-2016-4485] = "fixed-version: Fixed from version 4.6" + +CVE_STATUS[CVE-2016-4486] = "fixed-version: Fixed from version 4.6" + +CVE_STATUS[CVE-2016-4557] = "fixed-version: Fixed from version 4.6rc6" + +CVE_STATUS[CVE-2016-4558] = "fixed-version: Fixed from version 4.6rc7" + +CVE_STATUS[CVE-2016-4565] = "fixed-version: Fixed from version 4.6rc6" + +CVE_STATUS[CVE-2016-4568] = "fixed-version: Fixed from version 4.6rc6" + +CVE_STATUS[CVE-2016-4569] = "fixed-version: Fixed from version 4.7rc1" + +CVE_STATUS[CVE-2016-4578] = "fixed-version: Fixed from version 4.7rc1" + +CVE_STATUS[CVE-2016-4580] = "fixed-version: Fixed from version 4.6" + +CVE_STATUS[CVE-2016-4581] = "fixed-version: Fixed from version 4.6rc7" + +CVE_STATUS[CVE-2016-4794] = "fixed-version: Fixed from version 4.7rc4" + +CVE_STATUS[CVE-2016-4805] = "fixed-version: Fixed from version 4.6rc1" + +CVE_STATUS[CVE-2016-4913] = "fixed-version: Fixed from version 4.6" + +CVE_STATUS[CVE-2016-4951] = "fixed-version: Fixed from version 4.7rc1" + +CVE_STATUS[CVE-2016-4997] = "fixed-version: Fixed from version 4.7rc1" + +CVE_STATUS[CVE-2016-4998] = "fixed-version: Fixed from version 4.7rc1" + +CVE_STATUS[CVE-2016-5195] = "fixed-version: Fixed from version 4.9rc2" + +CVE_STATUS[CVE-2016-5243] = "fixed-version: Fixed from version 4.7rc3" + +CVE_STATUS[CVE-2016-5244] = "fixed-version: Fixed from version 4.7rc3" + +# Skipping CVE-2016-5340, no affected_versions + +# Skipping CVE-2016-5342, no affected_versions + +# Skipping CVE-2016-5343, no affected_versions + +# Skipping CVE-2016-5344, no affected_versions + +CVE_STATUS[CVE-2016-5400] = "fixed-version: Fixed from version 4.7" + +CVE_STATUS[CVE-2016-5412] = "fixed-version: Fixed from version 4.8rc1" + +CVE_STATUS[CVE-2016-5696] = "fixed-version: Fixed from version 4.7" + +CVE_STATUS[CVE-2016-5728] = "fixed-version: Fixed from version 4.7rc1" + +CVE_STATUS[CVE-2016-5828] = "fixed-version: Fixed from version 4.7rc6" + +CVE_STATUS[CVE-2016-5829] = "fixed-version: Fixed from version 4.7rc5" + +# CVE-2016-5870 has no known resolution + +CVE_STATUS[CVE-2016-6130] = "fixed-version: Fixed from version 4.6rc6" + +CVE_STATUS[CVE-2016-6136] = "fixed-version: Fixed from version 4.8rc1" + +CVE_STATUS[CVE-2016-6156] = "fixed-version: Fixed from version 4.7rc7" + +CVE_STATUS[CVE-2016-6162] = "fixed-version: Fixed from version 4.7" + +CVE_STATUS[CVE-2016-6187] = "fixed-version: Fixed from version 4.7rc7" + +CVE_STATUS[CVE-2016-6197] = "fixed-version: Fixed from version 4.6rc1" + +CVE_STATUS[CVE-2016-6198] = "fixed-version: Fixed from version 4.6" + +CVE_STATUS[CVE-2016-6213] = "fixed-version: Fixed from version 4.9rc1" + +CVE_STATUS[CVE-2016-6327] = "fixed-version: Fixed from version 4.6rc1" + +CVE_STATUS[CVE-2016-6480] = "fixed-version: Fixed from version 4.8rc3" + +CVE_STATUS[CVE-2016-6516] = "fixed-version: Fixed from version 4.8rc1" + +# Skipping CVE-2016-6753, no affected_versions + +CVE_STATUS[CVE-2016-6786] = "fixed-version: Fixed from version 4.0rc1" + +CVE_STATUS[CVE-2016-6787] = "fixed-version: Fixed from version 4.0rc1" + +CVE_STATUS[CVE-2016-6828] = "fixed-version: Fixed from version 4.8rc5" + +CVE_STATUS[CVE-2016-7039] = "fixed-version: Fixed from version 4.9rc4" + +CVE_STATUS[CVE-2016-7042] = "fixed-version: Fixed from version 4.9rc3" + +CVE_STATUS[CVE-2016-7097] = "fixed-version: Fixed from version 4.9rc1" + +CVE_STATUS[CVE-2016-7117] = "fixed-version: Fixed from version 4.6rc1" + +# Skipping CVE-2016-7118, no affected_versions + +CVE_STATUS[CVE-2016-7425] = "fixed-version: Fixed from version 4.9rc1" + +CVE_STATUS[CVE-2016-7910] = "fixed-version: Fixed from version 4.8rc1" + +CVE_STATUS[CVE-2016-7911] = "fixed-version: Fixed from version 4.7rc7" + +CVE_STATUS[CVE-2016-7912] = "fixed-version: Fixed from version 4.6rc5" + +CVE_STATUS[CVE-2016-7913] = "fixed-version: Fixed from version 4.6rc1" + +CVE_STATUS[CVE-2016-7914] = "fixed-version: Fixed from version 4.6rc4" + +CVE_STATUS[CVE-2016-7915] = "fixed-version: Fixed from version 4.6rc1" + +CVE_STATUS[CVE-2016-7916] = "fixed-version: Fixed from version 4.6rc7" + +CVE_STATUS[CVE-2016-7917] = "fixed-version: Fixed from version 4.5rc6" + +CVE_STATUS[CVE-2016-8399] = "fixed-version: Fixed from version 4.9" + +# Skipping CVE-2016-8401, no affected_versions + +# Skipping CVE-2016-8402, no affected_versions + +# Skipping CVE-2016-8403, no affected_versions + +# Skipping CVE-2016-8404, no affected_versions + +CVE_STATUS[CVE-2016-8405] = "fixed-version: Fixed from version 4.10rc6" + +# Skipping CVE-2016-8406, no affected_versions + +# Skipping CVE-2016-8407, no affected_versions + +CVE_STATUS[CVE-2016-8630] = "fixed-version: Fixed from version 4.9rc4" + +CVE_STATUS[CVE-2016-8632] = "fixed-version: Fixed from version 4.9rc8" + +CVE_STATUS[CVE-2016-8633] = "fixed-version: Fixed from version 4.9rc4" + +CVE_STATUS[CVE-2016-8636] = "fixed-version: Fixed from version 4.10rc8" + +CVE_STATUS[CVE-2016-8645] = "fixed-version: Fixed from version 4.9rc6" + +CVE_STATUS[CVE-2016-8646] = "fixed-version: Fixed from version 4.4rc1" + +CVE_STATUS[CVE-2016-8650] = "fixed-version: Fixed from version 4.9rc7" + +CVE_STATUS[CVE-2016-8655] = "fixed-version: Fixed from version 4.9rc8" + +CVE_STATUS[CVE-2016-8658] = "fixed-version: Fixed from version 4.8rc7" + +# CVE-2016-8660 has no known resolution + +CVE_STATUS[CVE-2016-8666] = "fixed-version: Fixed from version 4.6rc1" + +CVE_STATUS[CVE-2016-9083] = "fixed-version: Fixed from version 4.9rc4" + +CVE_STATUS[CVE-2016-9084] = "fixed-version: Fixed from version 4.9rc4" + +CVE_STATUS[CVE-2016-9120] = "fixed-version: Fixed from version 4.6rc1" + +CVE_STATUS[CVE-2016-9178] = "fixed-version: Fixed from version 4.8rc7" + +CVE_STATUS[CVE-2016-9191] = "fixed-version: Fixed from version 4.10rc4" + +CVE_STATUS[CVE-2016-9313] = "fixed-version: Fixed from version 4.9rc3" + +CVE_STATUS[CVE-2016-9555] = "fixed-version: Fixed from version 4.9rc4" + +CVE_STATUS[CVE-2016-9576] = "fixed-version: Fixed from version 4.9" + +CVE_STATUS[CVE-2016-9588] = "fixed-version: Fixed from version 4.10rc1" + +CVE_STATUS[CVE-2016-9604] = "fixed-version: Fixed from version 4.11rc8" + +# Skipping CVE-2016-9644, no affected_versions + +CVE_STATUS[CVE-2016-9685] = "fixed-version: Fixed from version 4.6rc1" + +CVE_STATUS[CVE-2016-9754] = "fixed-version: Fixed from version 4.7rc1" + +CVE_STATUS[CVE-2016-9755] = "fixed-version: Fixed from version 4.9rc8" + +CVE_STATUS[CVE-2016-9756] = "fixed-version: Fixed from version 4.9rc7" + +CVE_STATUS[CVE-2016-9777] = "fixed-version: Fixed from version 4.9rc7" + +CVE_STATUS[CVE-2016-9793] = "fixed-version: Fixed from version 4.9rc8" + +CVE_STATUS[CVE-2016-9794] = "fixed-version: Fixed from version 4.7rc1" + +CVE_STATUS[CVE-2016-9806] = "fixed-version: Fixed from version 4.7rc1" + +CVE_STATUS[CVE-2016-9919] = "fixed-version: Fixed from version 4.9rc8" + +# Skipping CVE-2017-0403, no affected_versions + +# Skipping CVE-2017-0404, no affected_versions + +# Skipping CVE-2017-0426, no affected_versions + +# Skipping CVE-2017-0427, no affected_versions + +# CVE-2017-0507 has no known resolution + +# CVE-2017-0508 has no known resolution + +# Skipping CVE-2017-0510, no affected_versions + +# Skipping CVE-2017-0528, no affected_versions + +# Skipping CVE-2017-0537, no affected_versions + +# CVE-2017-0564 has no known resolution + +CVE_STATUS[CVE-2017-0605] = "fixed-version: Fixed from version 4.12rc1" + +CVE_STATUS[CVE-2017-0627] = "fixed-version: Fixed from version 4.14rc1" + +# CVE-2017-0630 has no known resolution + +# CVE-2017-0749 has no known resolution + +CVE_STATUS[CVE-2017-0750] = "fixed-version: Fixed from version 4.5rc1" + +CVE_STATUS[CVE-2017-0786] = "fixed-version: Fixed from version 4.14rc4" + +CVE_STATUS[CVE-2017-0861] = "fixed-version: Fixed from version 4.15rc3" + +CVE_STATUS[CVE-2017-1000] = "fixed-version: Fixed from version 4.13rc5" + +CVE_STATUS[CVE-2017-1000111] = "fixed-version: Fixed from version 4.13rc5" + +CVE_STATUS[CVE-2017-1000112] = "fixed-version: Fixed from version 4.13rc5" + +CVE_STATUS[CVE-2017-1000251] = "fixed-version: Fixed from version 4.14rc1" + +CVE_STATUS[CVE-2017-1000252] = "fixed-version: Fixed from version 4.14rc1" + +CVE_STATUS[CVE-2017-1000253] = "fixed-version: Fixed from version 4.1rc1" + +CVE_STATUS[CVE-2017-1000255] = "fixed-version: Fixed from version 4.14rc5" + +CVE_STATUS[CVE-2017-1000363] = "fixed-version: Fixed from version 4.12rc2" + +CVE_STATUS[CVE-2017-1000364] = "fixed-version: Fixed from version 4.12rc6" + +CVE_STATUS[CVE-2017-1000365] = "fixed-version: Fixed from version 4.12rc7" + +CVE_STATUS[CVE-2017-1000370] = "fixed-version: Fixed from version 4.13rc1" + +CVE_STATUS[CVE-2017-1000371] = "fixed-version: Fixed from version 4.13rc1" + +CVE_STATUS[CVE-2017-1000379] = "fixed-version: Fixed from version 4.12rc6" + +CVE_STATUS[CVE-2017-1000380] = "fixed-version: Fixed from version 4.12rc5" + +CVE_STATUS[CVE-2017-1000405] = "fixed-version: Fixed from version 4.15rc2" + +CVE_STATUS[CVE-2017-1000407] = "fixed-version: Fixed from version 4.15rc3" + +CVE_STATUS[CVE-2017-1000410] = "fixed-version: Fixed from version 4.15rc8" + +CVE_STATUS[CVE-2017-10661] = "fixed-version: Fixed from version 4.11rc1" + +CVE_STATUS[CVE-2017-10662] = "fixed-version: Fixed from version 4.12rc1" + +CVE_STATUS[CVE-2017-10663] = "fixed-version: Fixed from version 4.13rc1" + +CVE_STATUS[CVE-2017-10810] = "fixed-version: Fixed from version 4.12rc1" + +CVE_STATUS[CVE-2017-10911] = "fixed-version: Fixed from version 4.12rc7" + +CVE_STATUS[CVE-2017-11089] = "fixed-version: Fixed from version 4.13rc1" + +CVE_STATUS[CVE-2017-11176] = "fixed-version: Fixed from version 4.13rc1" + +CVE_STATUS[CVE-2017-11472] = "fixed-version: Fixed from version 4.12rc1" + +CVE_STATUS[CVE-2017-11473] = "fixed-version: Fixed from version 4.13rc2" + +CVE_STATUS[CVE-2017-11600] = "fixed-version: Fixed from version 4.13" + +CVE_STATUS[CVE-2017-12134] = "fixed-version: Fixed from version 4.13rc6" + +CVE_STATUS[CVE-2017-12146] = "fixed-version: Fixed from version 4.13rc1" + +CVE_STATUS[CVE-2017-12153] = "fixed-version: Fixed from version 4.14rc2" + +CVE_STATUS[CVE-2017-12154] = "fixed-version: Fixed from version 4.14rc1" + +CVE_STATUS[CVE-2017-12168] = "fixed-version: Fixed from version 4.9rc6" + +CVE_STATUS[CVE-2017-12188] = "fixed-version: Fixed from version 4.14rc5" + +CVE_STATUS[CVE-2017-12190] = "fixed-version: Fixed from version 4.14rc5" + +CVE_STATUS[CVE-2017-12192] = "fixed-version: Fixed from version 4.14rc3" + +CVE_STATUS[CVE-2017-12193] = "fixed-version: Fixed from version 4.14rc7" + +CVE_STATUS[CVE-2017-12762] = "fixed-version: Fixed from version 4.13rc4" + +CVE_STATUS[CVE-2017-13080] = "fixed-version: Fixed from version 4.14rc6" + +CVE_STATUS[CVE-2017-13166] = "fixed-version: Fixed from version 4.16rc1" + +CVE_STATUS[CVE-2017-13167] = "fixed-version: Fixed from version 4.5rc4" + +CVE_STATUS[CVE-2017-13168] = "fixed-version: Fixed from version 4.18rc4" + +CVE_STATUS[CVE-2017-13215] = "fixed-version: Fixed from version 4.5rc1" + +CVE_STATUS[CVE-2017-13216] = "fixed-version: Fixed from version 4.15rc8" + +CVE_STATUS[CVE-2017-13220] = "fixed-version: Fixed from version 3.19rc3" + +# CVE-2017-13221 has no known resolution + +# CVE-2017-13222 has no known resolution + +CVE_STATUS[CVE-2017-13305] = "fixed-version: Fixed from version 4.12rc5" + +CVE_STATUS[CVE-2017-13686] = "fixed-version: Fixed from version 4.13rc7" + +# CVE-2017-13693 has no known resolution + +# CVE-2017-13694 has no known resolution + +CVE_STATUS[CVE-2017-13695] = "fixed-version: Fixed from version 4.17rc1" + +CVE_STATUS[CVE-2017-13715] = "fixed-version: Fixed from version 4.3rc1" + +CVE_STATUS[CVE-2017-14051] = "fixed-version: Fixed from version 4.14rc1" + +CVE_STATUS[CVE-2017-14106] = "fixed-version: Fixed from version 4.12rc3" + +CVE_STATUS[CVE-2017-14140] = "fixed-version: Fixed from version 4.13rc6" + +CVE_STATUS[CVE-2017-14156] = "fixed-version: Fixed from version 4.14rc1" + +CVE_STATUS[CVE-2017-14340] = "fixed-version: Fixed from version 4.14rc1" + +CVE_STATUS[CVE-2017-14489] = "fixed-version: Fixed from version 4.14rc3" + +CVE_STATUS[CVE-2017-14497] = "fixed-version: Fixed from version 4.13" + +CVE_STATUS[CVE-2017-14954] = "fixed-version: Fixed from version 4.14rc3" + +CVE_STATUS[CVE-2017-14991] = "fixed-version: Fixed from version 4.14rc2" + +CVE_STATUS[CVE-2017-15102] = "fixed-version: Fixed from version 4.9rc1" + +CVE_STATUS[CVE-2017-15115] = "fixed-version: Fixed from version 4.14rc6" + +CVE_STATUS[CVE-2017-15116] = "fixed-version: Fixed from version 4.2rc1" + +CVE_STATUS[CVE-2017-15121] = "fixed-version: Fixed from version 3.11rc1" + +CVE_STATUS[CVE-2017-15126] = "fixed-version: Fixed from version 4.14rc4" + +CVE_STATUS[CVE-2017-15127] = "fixed-version: Fixed from version 4.13rc5" + +CVE_STATUS[CVE-2017-15128] = "fixed-version: Fixed from version 4.14rc8" + +CVE_STATUS[CVE-2017-15129] = "fixed-version: Fixed from version 4.15rc5" + +CVE_STATUS[CVE-2017-15265] = "fixed-version: Fixed from version 4.14rc5" + +CVE_STATUS[CVE-2017-15274] = "fixed-version: Fixed from version 4.12rc5" + +CVE_STATUS[CVE-2017-15299] = "fixed-version: Fixed from version 4.14rc6" + +CVE_STATUS[CVE-2017-15306] = "fixed-version: Fixed from version 4.14rc7" + +CVE_STATUS[CVE-2017-15537] = "fixed-version: Fixed from version 4.14rc3" + +CVE_STATUS[CVE-2017-15649] = "fixed-version: Fixed from version 4.14rc4" + +CVE_STATUS[CVE-2017-15868] = "fixed-version: Fixed from version 3.19rc3" + +CVE_STATUS[CVE-2017-15951] = "fixed-version: Fixed from version 4.14rc6" + +CVE_STATUS[CVE-2017-16525] = "fixed-version: Fixed from version 4.14rc5" + +CVE_STATUS[CVE-2017-16526] = "fixed-version: Fixed from version 4.14rc4" + +CVE_STATUS[CVE-2017-16527] = "fixed-version: Fixed from version 4.14rc5" + +CVE_STATUS[CVE-2017-16528] = "fixed-version: Fixed from version 4.14rc1" + +CVE_STATUS[CVE-2017-16529] = "fixed-version: Fixed from version 4.14rc4" + +CVE_STATUS[CVE-2017-16530] = "fixed-version: Fixed from version 4.14rc4" + +CVE_STATUS[CVE-2017-16531] = "fixed-version: Fixed from version 4.14rc4" + +CVE_STATUS[CVE-2017-16532] = "fixed-version: Fixed from version 4.14rc5" + +CVE_STATUS[CVE-2017-16533] = "fixed-version: Fixed from version 4.14rc5" + +CVE_STATUS[CVE-2017-16534] = "fixed-version: Fixed from version 4.14rc4" + +CVE_STATUS[CVE-2017-16535] = "fixed-version: Fixed from version 4.14rc6" + +CVE_STATUS[CVE-2017-16536] = "fixed-version: Fixed from version 4.15rc1" + +CVE_STATUS[CVE-2017-16537] = "fixed-version: Fixed from version 4.15rc1" + +CVE_STATUS[CVE-2017-16538] = "fixed-version: Fixed from version 4.16rc1" + +CVE_STATUS[CVE-2017-16643] = "fixed-version: Fixed from version 4.14rc7" + +CVE_STATUS[CVE-2017-16644] = "fixed-version: Fixed from version 4.16rc1" + +CVE_STATUS[CVE-2017-16645] = "fixed-version: Fixed from version 4.14rc6" + +CVE_STATUS[CVE-2017-16646] = "fixed-version: Fixed from version 4.15rc1" + +CVE_STATUS[CVE-2017-16647] = "fixed-version: Fixed from version 4.14" + +CVE_STATUS[CVE-2017-16648] = "fixed-version: Fixed from version 4.15rc1" + +CVE_STATUS[CVE-2017-16649] = "fixed-version: Fixed from version 4.14" + +CVE_STATUS[CVE-2017-16650] = "fixed-version: Fixed from version 4.14" + +CVE_STATUS[CVE-2017-16911] = "fixed-version: Fixed from version 4.15rc4" + +CVE_STATUS[CVE-2017-16912] = "fixed-version: Fixed from version 4.15rc4" + +CVE_STATUS[CVE-2017-16913] = "fixed-version: Fixed from version 4.15rc4" + +CVE_STATUS[CVE-2017-16914] = "fixed-version: Fixed from version 4.15rc4" + +CVE_STATUS[CVE-2017-16939] = "fixed-version: Fixed from version 4.14rc7" + +CVE_STATUS[CVE-2017-16994] = "fixed-version: Fixed from version 4.15rc1" + +CVE_STATUS[CVE-2017-16995] = "fixed-version: Fixed from version 4.15rc5" + +CVE_STATUS[CVE-2017-16996] = "fixed-version: Fixed from version 4.15rc5" + +CVE_STATUS[CVE-2017-17052] = "fixed-version: Fixed from version 4.13rc7" + +CVE_STATUS[CVE-2017-17053] = "fixed-version: Fixed from version 4.13rc7" + +CVE_STATUS[CVE-2017-17448] = "fixed-version: Fixed from version 4.15rc4" + +CVE_STATUS[CVE-2017-17449] = "fixed-version: Fixed from version 4.15rc4" + +CVE_STATUS[CVE-2017-17450] = "fixed-version: Fixed from version 4.15rc4" + +CVE_STATUS[CVE-2017-17558] = "fixed-version: Fixed from version 4.15rc4" + +CVE_STATUS[CVE-2017-17712] = "fixed-version: Fixed from version 4.15rc4" + +CVE_STATUS[CVE-2017-17741] = "fixed-version: Fixed from version 4.15rc5" + +CVE_STATUS[CVE-2017-17805] = "fixed-version: Fixed from version 4.15rc4" + +CVE_STATUS[CVE-2017-17806] = "fixed-version: Fixed from version 4.15rc4" + +CVE_STATUS[CVE-2017-17807] = "fixed-version: Fixed from version 4.15rc3" + +CVE_STATUS[CVE-2017-17852] = "fixed-version: Fixed from version 4.15rc5" + +CVE_STATUS[CVE-2017-17853] = "fixed-version: Fixed from version 4.15rc5" + +CVE_STATUS[CVE-2017-17854] = "fixed-version: Fixed from version 4.15rc5" + +CVE_STATUS[CVE-2017-17855] = "fixed-version: Fixed from version 4.15rc5" + +CVE_STATUS[CVE-2017-17856] = "fixed-version: Fixed from version 4.15rc5" + +CVE_STATUS[CVE-2017-17857] = "fixed-version: Fixed from version 4.15rc5" + +CVE_STATUS[CVE-2017-17862] = "fixed-version: Fixed from version 4.15rc1" + +CVE_STATUS[CVE-2017-17863] = "fixed-version: Fixed from version 4.15rc5" + +CVE_STATUS[CVE-2017-17864] = "fixed-version: Fixed from version 4.15rc5" + +CVE_STATUS[CVE-2017-17975] = "fixed-version: Fixed from version 4.17rc1" + +CVE_STATUS[CVE-2017-18017] = "fixed-version: Fixed from version 4.11rc7" + +CVE_STATUS[CVE-2017-18075] = "fixed-version: Fixed from version 4.15rc7" + +CVE_STATUS[CVE-2017-18079] = "fixed-version: Fixed from version 4.13rc1" + +# CVE-2017-18169 has no known resolution + +CVE_STATUS[CVE-2017-18174] = "fixed-version: Fixed from version 4.7rc1" + +CVE_STATUS[CVE-2017-18193] = "fixed-version: Fixed from version 4.13rc1" + +CVE_STATUS[CVE-2017-18200] = "fixed-version: Fixed from version 4.14rc5" + +CVE_STATUS[CVE-2017-18202] = "fixed-version: Fixed from version 4.15rc2" + +CVE_STATUS[CVE-2017-18203] = "fixed-version: Fixed from version 4.15rc1" + +CVE_STATUS[CVE-2017-18204] = "fixed-version: Fixed from version 4.15rc1" + +CVE_STATUS[CVE-2017-18208] = "fixed-version: Fixed from version 4.15rc2" + +CVE_STATUS[CVE-2017-18216] = "fixed-version: Fixed from version 4.15rc1" + +CVE_STATUS[CVE-2017-18218] = "fixed-version: Fixed from version 4.13rc1" + +CVE_STATUS[CVE-2017-18221] = "fixed-version: Fixed from version 4.12rc4" + +CVE_STATUS[CVE-2017-18222] = "fixed-version: Fixed from version 4.12rc1" + +CVE_STATUS[CVE-2017-18224] = "fixed-version: Fixed from version 4.15rc1" + +CVE_STATUS[CVE-2017-18232] = "fixed-version: Fixed from version 4.16rc1" + +CVE_STATUS[CVE-2017-18241] = "fixed-version: Fixed from version 4.13rc1" + +CVE_STATUS[CVE-2017-18249] = "fixed-version: Fixed from version 4.12rc1" + +CVE_STATUS[CVE-2017-18255] = "fixed-version: Fixed from version 4.11rc1" + +CVE_STATUS[CVE-2017-18257] = "fixed-version: Fixed from version 4.11rc1" + +CVE_STATUS[CVE-2017-18261] = "fixed-version: Fixed from version 4.13rc6" + +CVE_STATUS[CVE-2017-18270] = "fixed-version: Fixed from version 4.14rc3" + +CVE_STATUS[CVE-2017-18344] = "fixed-version: Fixed from version 4.15rc4" + +CVE_STATUS[CVE-2017-18360] = "fixed-version: Fixed from version 4.12rc2" + +CVE_STATUS[CVE-2017-18379] = "fixed-version: Fixed from version 4.14rc3" + +CVE_STATUS[CVE-2017-18509] = "fixed-version: Fixed from version 4.11rc1" + +CVE_STATUS[CVE-2017-18549] = "fixed-version: Fixed from version 4.13rc1" + +CVE_STATUS[CVE-2017-18550] = "fixed-version: Fixed from version 4.13rc1" + +CVE_STATUS[CVE-2017-18551] = "fixed-version: Fixed from version 4.15rc9" + +CVE_STATUS[CVE-2017-18552] = "fixed-version: Fixed from version 4.11rc1" + +CVE_STATUS[CVE-2017-18595] = "fixed-version: Fixed from version 4.15rc6" + +CVE_STATUS[CVE-2017-2583] = "fixed-version: Fixed from version 4.10rc4" + +CVE_STATUS[CVE-2017-2584] = "fixed-version: Fixed from version 4.10rc4" + +CVE_STATUS[CVE-2017-2596] = "fixed-version: Fixed from version 4.11rc1" + +CVE_STATUS[CVE-2017-2618] = "fixed-version: Fixed from version 4.10rc8" + +CVE_STATUS[CVE-2017-2634] = "fixed-version: Fixed from version 2.6.25rc1" + +CVE_STATUS[CVE-2017-2636] = "fixed-version: Fixed from version 4.11rc2" + +CVE_STATUS[CVE-2017-2647] = "fixed-version: Fixed from version 3.18rc1" + +CVE_STATUS[CVE-2017-2671] = "fixed-version: Fixed from version 4.11rc6" + +CVE_STATUS[CVE-2017-5123] = "fixed-version: Fixed from version 4.14rc5" + +CVE_STATUS[CVE-2017-5546] = "fixed-version: Fixed from version 4.10rc4" + +CVE_STATUS[CVE-2017-5547] = "fixed-version: Fixed from version 4.10rc5" + +CVE_STATUS[CVE-2017-5548] = "fixed-version: Fixed from version 4.10rc5" + +CVE_STATUS[CVE-2017-5549] = "fixed-version: Fixed from version 4.10rc4" + +CVE_STATUS[CVE-2017-5550] = "fixed-version: Fixed from version 4.10rc4" + +CVE_STATUS[CVE-2017-5551] = "fixed-version: Fixed from version 4.10rc4" + +CVE_STATUS[CVE-2017-5576] = "fixed-version: Fixed from version 4.10rc6" + +CVE_STATUS[CVE-2017-5577] = "fixed-version: Fixed from version 4.10rc6" + +CVE_STATUS[CVE-2017-5669] = "fixed-version: Fixed from version 4.11rc1" + +CVE_STATUS[CVE-2017-5715] = "fixed-version: Fixed from version 4.15rc8" + +CVE_STATUS[CVE-2017-5753] = "fixed-version: Fixed from version 4.15rc8" + +CVE_STATUS[CVE-2017-5754] = "fixed-version: Fixed from version 4.16rc1" + +CVE_STATUS[CVE-2017-5897] = "fixed-version: Fixed from version 4.10rc8" + +CVE_STATUS[CVE-2017-5967] = "fixed-version: Fixed from version 4.11rc1" + +CVE_STATUS[CVE-2017-5970] = "fixed-version: Fixed from version 4.10rc8" + +CVE_STATUS[CVE-2017-5972] = "fixed-version: Fixed from version 4.4rc1" + +CVE_STATUS[CVE-2017-5986] = "fixed-version: Fixed from version 4.10rc8" + +CVE_STATUS[CVE-2017-6001] = "fixed-version: Fixed from version 4.10rc4" + +CVE_STATUS[CVE-2017-6074] = "fixed-version: Fixed from version 4.10" + +CVE_STATUS[CVE-2017-6214] = "fixed-version: Fixed from version 4.10rc8" + +CVE_STATUS[CVE-2017-6345] = "fixed-version: Fixed from version 4.10" + +CVE_STATUS[CVE-2017-6346] = "fixed-version: Fixed from version 4.10" + +CVE_STATUS[CVE-2017-6347] = "fixed-version: Fixed from version 4.11rc1" + +CVE_STATUS[CVE-2017-6348] = "fixed-version: Fixed from version 4.10" + +CVE_STATUS[CVE-2017-6353] = "fixed-version: Fixed from version 4.11rc1" + +CVE_STATUS[CVE-2017-6874] = "fixed-version: Fixed from version 4.11rc2" + +CVE_STATUS[CVE-2017-6951] = "fixed-version: Fixed from version 3.18rc1" + +CVE_STATUS[CVE-2017-7184] = "fixed-version: Fixed from version 4.11rc5" + +CVE_STATUS[CVE-2017-7187] = "fixed-version: Fixed from version 4.11rc5" + +CVE_STATUS[CVE-2017-7261] = "fixed-version: Fixed from version 4.11rc6" + +CVE_STATUS[CVE-2017-7273] = "fixed-version: Fixed from version 4.10rc4" + +CVE_STATUS[CVE-2017-7277] = "fixed-version: Fixed from version 4.11rc4" + +CVE_STATUS[CVE-2017-7294] = "fixed-version: Fixed from version 4.11rc6" + +CVE_STATUS[CVE-2017-7308] = "fixed-version: Fixed from version 4.11rc6" + +CVE_STATUS[CVE-2017-7346] = "fixed-version: Fixed from version 4.12rc5" + +# CVE-2017-7369 has no known resolution + +CVE_STATUS[CVE-2017-7374] = "fixed-version: Fixed from version 4.11rc4" + +CVE_STATUS[CVE-2017-7472] = "fixed-version: Fixed from version 4.11rc8" + +CVE_STATUS[CVE-2017-7477] = "fixed-version: Fixed from version 4.11" + +CVE_STATUS[CVE-2017-7482] = "fixed-version: Fixed from version 4.12rc7" + +CVE_STATUS[CVE-2017-7487] = "fixed-version: Fixed from version 4.12rc1" + +CVE_STATUS[CVE-2017-7495] = "fixed-version: Fixed from version 4.7rc1" + +CVE_STATUS[CVE-2017-7518] = "fixed-version: Fixed from version 4.12rc7" + +CVE_STATUS[CVE-2017-7533] = "fixed-version: Fixed from version 4.13rc1" + +CVE_STATUS[CVE-2017-7541] = "fixed-version: Fixed from version 4.13rc1" + +CVE_STATUS[CVE-2017-7542] = "fixed-version: Fixed from version 4.13rc2" + +CVE_STATUS[CVE-2017-7558] = "fixed-version: Fixed from version 4.13" + +CVE_STATUS[CVE-2017-7616] = "fixed-version: Fixed from version 4.11rc6" + +CVE_STATUS[CVE-2017-7618] = "fixed-version: Fixed from version 4.11rc8" + +CVE_STATUS[CVE-2017-7645] = "fixed-version: Fixed from version 4.11" + +CVE_STATUS[CVE-2017-7889] = "fixed-version: Fixed from version 4.11rc7" + +CVE_STATUS[CVE-2017-7895] = "fixed-version: Fixed from version 4.11" + +CVE_STATUS[CVE-2017-7979] = "fixed-version: Fixed from version 4.11rc8" + +CVE_STATUS[CVE-2017-8061] = "fixed-version: Fixed from version 4.11rc4" + +CVE_STATUS[CVE-2017-8062] = "fixed-version: Fixed from version 4.11rc2" + +CVE_STATUS[CVE-2017-8063] = "fixed-version: Fixed from version 4.11rc1" + +CVE_STATUS[CVE-2017-8064] = "fixed-version: Fixed from version 4.11rc1" + +CVE_STATUS[CVE-2017-8065] = "fixed-version: Fixed from version 4.11rc1" + +CVE_STATUS[CVE-2017-8066] = "fixed-version: Fixed from version 4.11rc1" + +CVE_STATUS[CVE-2017-8067] = "fixed-version: Fixed from version 4.11rc1" + +CVE_STATUS[CVE-2017-8068] = "fixed-version: Fixed from version 4.10rc8" + +CVE_STATUS[CVE-2017-8069] = "fixed-version: Fixed from version 4.10rc8" + +CVE_STATUS[CVE-2017-8070] = "fixed-version: Fixed from version 4.10rc8" + +CVE_STATUS[CVE-2017-8071] = "fixed-version: Fixed from version 4.10rc7" + +CVE_STATUS[CVE-2017-8072] = "fixed-version: Fixed from version 4.10rc7" + +CVE_STATUS[CVE-2017-8106] = "fixed-version: Fixed from version 3.16rc1" + +CVE_STATUS[CVE-2017-8240] = "fixed-version: Fixed from version 3.19rc6" + +# CVE-2017-8242 has no known resolution + +# CVE-2017-8244 has no known resolution + +# CVE-2017-8245 has no known resolution + +# CVE-2017-8246 has no known resolution + +CVE_STATUS[CVE-2017-8797] = "fixed-version: Fixed from version 4.12rc1" + +CVE_STATUS[CVE-2017-8824] = "fixed-version: Fixed from version 4.15rc3" + +CVE_STATUS[CVE-2017-8831] = "fixed-version: Fixed from version 4.13rc1" + +CVE_STATUS[CVE-2017-8890] = "fixed-version: Fixed from version 4.12rc1" + +CVE_STATUS[CVE-2017-8924] = "fixed-version: Fixed from version 4.11rc2" + +CVE_STATUS[CVE-2017-8925] = "fixed-version: Fixed from version 4.11rc2" + +CVE_STATUS[CVE-2017-9059] = "fixed-version: Fixed from version 4.12rc1" + +CVE_STATUS[CVE-2017-9074] = "fixed-version: Fixed from version 4.12rc2" + +CVE_STATUS[CVE-2017-9075] = "fixed-version: Fixed from version 4.12rc2" + +CVE_STATUS[CVE-2017-9076] = "fixed-version: Fixed from version 4.12rc2" + +CVE_STATUS[CVE-2017-9077] = "fixed-version: Fixed from version 4.12rc2" + +CVE_STATUS[CVE-2017-9150] = "fixed-version: Fixed from version 4.12rc1" + +CVE_STATUS[CVE-2017-9211] = "fixed-version: Fixed from version 4.12rc3" + +CVE_STATUS[CVE-2017-9242] = "fixed-version: Fixed from version 4.12rc3" + +CVE_STATUS[CVE-2017-9605] = "fixed-version: Fixed from version 4.12rc5" + +CVE_STATUS[CVE-2017-9725] = "fixed-version: Fixed from version 4.3rc7" + +CVE_STATUS[CVE-2017-9984] = "fixed-version: Fixed from version 4.13rc1" + +CVE_STATUS[CVE-2017-9985] = "fixed-version: Fixed from version 4.13rc1" + +CVE_STATUS[CVE-2017-9986] = "fixed-version: Fixed from version 4.15rc1" + +CVE_STATUS[CVE-2018-1000004] = "fixed-version: Fixed from version 4.15rc9" + +CVE_STATUS[CVE-2018-1000026] = "fixed-version: Fixed from version 4.16rc1" + +CVE_STATUS[CVE-2018-1000028] = "fixed-version: Fixed from version 4.15" + +CVE_STATUS[CVE-2018-1000199] = "fixed-version: Fixed from version 4.16" + +CVE_STATUS[CVE-2018-1000200] = "fixed-version: Fixed from version 4.17rc5" + +CVE_STATUS[CVE-2018-1000204] = "fixed-version: Fixed from version 4.17rc7" + +CVE_STATUS[CVE-2018-10021] = "fixed-version: Fixed from version 4.16rc7" + +CVE_STATUS[CVE-2018-10074] = "fixed-version: Fixed from version 4.16rc7" + +CVE_STATUS[CVE-2018-10087] = "fixed-version: Fixed from version 4.13rc1" + +CVE_STATUS[CVE-2018-10124] = "fixed-version: Fixed from version 4.13rc1" + +CVE_STATUS[CVE-2018-10322] = "fixed-version: Fixed from version 4.17rc4" + +CVE_STATUS[CVE-2018-10323] = "fixed-version: Fixed from version 4.17rc4" + +CVE_STATUS[CVE-2018-1065] = "fixed-version: Fixed from version 4.16rc3" + +CVE_STATUS[CVE-2018-1066] = "fixed-version: Fixed from version 4.11rc1" + +CVE_STATUS[CVE-2018-10675] = "fixed-version: Fixed from version 4.13rc6" + +CVE_STATUS[CVE-2018-1068] = "fixed-version: Fixed from version 4.16rc5" + +CVE_STATUS[CVE-2018-10840] = "fixed-version: Fixed from version 4.18rc1" + +CVE_STATUS[CVE-2018-10853] = "fixed-version: Fixed from version 4.18rc1" + +CVE_STATUS[CVE-2018-1087] = "fixed-version: Fixed from version 4.16rc7" + +# CVE-2018-10872 has no known resolution + +CVE_STATUS[CVE-2018-10876] = "fixed-version: Fixed from version 4.18rc4" + +CVE_STATUS[CVE-2018-10877] = "fixed-version: Fixed from version 4.18rc4" + +CVE_STATUS[CVE-2018-10878] = "fixed-version: Fixed from version 4.18rc4" + +CVE_STATUS[CVE-2018-10879] = "fixed-version: Fixed from version 4.18rc4" + +CVE_STATUS[CVE-2018-10880] = "fixed-version: Fixed from version 4.18rc4" + +CVE_STATUS[CVE-2018-10881] = "fixed-version: Fixed from version 4.18rc4" + +CVE_STATUS[CVE-2018-10882] = "fixed-version: Fixed from version 4.18rc4" + +CVE_STATUS[CVE-2018-10883] = "fixed-version: Fixed from version 4.18rc4" + +CVE_STATUS[CVE-2018-10901] = "fixed-version: Fixed from version 2.6.36rc1" + +CVE_STATUS[CVE-2018-10902] = "fixed-version: Fixed from version 4.18rc6" + +CVE_STATUS[CVE-2018-1091] = "fixed-version: Fixed from version 4.14rc2" + +CVE_STATUS[CVE-2018-1092] = "fixed-version: Fixed from version 4.17rc1" + +CVE_STATUS[CVE-2018-1093] = "fixed-version: Fixed from version 4.17rc1" + +CVE_STATUS[CVE-2018-10938] = "fixed-version: Fixed from version 4.13rc5" + +CVE_STATUS[CVE-2018-1094] = "fixed-version: Fixed from version 4.17rc1" + +CVE_STATUS[CVE-2018-10940] = "fixed-version: Fixed from version 4.17rc3" + +CVE_STATUS[CVE-2018-1095] = "fixed-version: Fixed from version 4.17rc1" + +CVE_STATUS[CVE-2018-1108] = "fixed-version: Fixed from version 4.17rc2" + +CVE_STATUS[CVE-2018-1118] = "fixed-version: Fixed from version 4.18rc1" + +CVE_STATUS[CVE-2018-1120] = "fixed-version: Fixed from version 4.17rc6" + +# CVE-2018-1121 has no known resolution + +CVE_STATUS[CVE-2018-11232] = "fixed-version: Fixed from version 4.11rc1" + +CVE_STATUS[CVE-2018-1128] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-1129] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-1130] = "fixed-version: Fixed from version 4.16rc7" + +CVE_STATUS[CVE-2018-11412] = "fixed-version: Fixed from version 4.18rc1" + +CVE_STATUS[CVE-2018-11506] = "fixed-version: Fixed from version 4.17rc7" + +CVE_STATUS[CVE-2018-11508] = "fixed-version: Fixed from version 4.17rc5" + +# CVE-2018-11987 has no known resolution + +CVE_STATUS[CVE-2018-12126] = "fixed-version: Fixed from version 5.2rc1" + +CVE_STATUS[CVE-2018-12127] = "fixed-version: Fixed from version 5.2rc1" + +CVE_STATUS[CVE-2018-12130] = "fixed-version: Fixed from version 5.2rc1" + +CVE_STATUS[CVE-2018-12207] = "fixed-version: Fixed from version 5.4rc2" + +CVE_STATUS[CVE-2018-12232] = "fixed-version: Fixed from version 4.18rc1" + +CVE_STATUS[CVE-2018-12233] = "fixed-version: Fixed from version 4.18rc2" + +CVE_STATUS[CVE-2018-12633] = "fixed-version: Fixed from version 4.18rc1" + +CVE_STATUS[CVE-2018-12714] = "fixed-version: Fixed from version 4.18rc2" + +CVE_STATUS[CVE-2018-12896] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-12904] = "fixed-version: Fixed from version 4.18rc1" + +# CVE-2018-12928 has no known resolution + +# CVE-2018-12929 has no known resolution + +# CVE-2018-12930 has no known resolution + +# CVE-2018-12931 has no known resolution + +CVE_STATUS[CVE-2018-13053] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-13093] = "fixed-version: Fixed from version 4.18rc1" + +CVE_STATUS[CVE-2018-13094] = "fixed-version: Fixed from version 4.18rc1" + +CVE_STATUS[CVE-2018-13095] = "fixed-version: Fixed from version 4.18rc3" + +CVE_STATUS[CVE-2018-13096] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-13097] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-13098] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-13099] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-13100] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-13405] = "fixed-version: Fixed from version 4.18rc4" + +CVE_STATUS[CVE-2018-13406] = "fixed-version: Fixed from version 4.18rc1" + +CVE_STATUS[CVE-2018-14609] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-14610] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-14611] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-14612] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-14613] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-14614] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-14615] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-14616] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-14617] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-14619] = "fixed-version: Fixed from version 4.15rc4" + +CVE_STATUS[CVE-2018-14625] = "fixed-version: Fixed from version 4.20rc6" + +CVE_STATUS[CVE-2018-14633] = "fixed-version: Fixed from version 4.19rc6" + +CVE_STATUS[CVE-2018-14634] = "fixed-version: Fixed from version 4.13rc1" + +CVE_STATUS[CVE-2018-14641] = "fixed-version: Fixed from version 4.19rc4" + +CVE_STATUS[CVE-2018-14646] = "fixed-version: Fixed from version 4.15rc8" + +CVE_STATUS[CVE-2018-14656] = "fixed-version: Fixed from version 4.19rc2" + +CVE_STATUS[CVE-2018-14678] = "fixed-version: Fixed from version 4.18rc8" + +CVE_STATUS[CVE-2018-14734] = "fixed-version: Fixed from version 4.18rc1" + +CVE_STATUS[CVE-2018-15471] = "fixed-version: Fixed from version 4.19rc7" + +CVE_STATUS[CVE-2018-15572] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-15594] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-16276] = "fixed-version: Fixed from version 4.18rc5" + +CVE_STATUS[CVE-2018-16597] = "fixed-version: Fixed from version 4.8rc1" + +CVE_STATUS[CVE-2018-16658] = "fixed-version: Fixed from version 4.19rc2" + +CVE_STATUS[CVE-2018-16862] = "fixed-version: Fixed from version 4.20rc5" + +CVE_STATUS[CVE-2018-16871] = "fixed-version: Fixed from version 4.20rc3" + +CVE_STATUS[CVE-2018-16880] = "fixed-version: Fixed from version 5.0rc5" + +CVE_STATUS[CVE-2018-16882] = "fixed-version: Fixed from version 4.20" + +CVE_STATUS[CVE-2018-16884] = "fixed-version: Fixed from version 5.0rc1" + +# CVE-2018-16885 has no known resolution + +CVE_STATUS[CVE-2018-17182] = "fixed-version: Fixed from version 4.19rc4" + +CVE_STATUS[CVE-2018-17972] = "fixed-version: Fixed from version 4.19rc7" + +# CVE-2018-17977 has no known resolution + +CVE_STATUS[CVE-2018-18021] = "fixed-version: Fixed from version 4.19rc7" + +CVE_STATUS[CVE-2018-18281] = "fixed-version: Fixed from version 4.19" + +CVE_STATUS[CVE-2018-18386] = "fixed-version: Fixed from version 4.15rc6" + +CVE_STATUS[CVE-2018-18397] = "fixed-version: Fixed from version 4.20rc5" + +CVE_STATUS[CVE-2018-18445] = "fixed-version: Fixed from version 4.19rc7" + +CVE_STATUS[CVE-2018-18559] = "fixed-version: Fixed from version 4.15rc2" + +# CVE-2018-18653 has no known resolution + +CVE_STATUS[CVE-2018-18690] = "fixed-version: Fixed from version 4.17rc4" + +CVE_STATUS[CVE-2018-18710] = "fixed-version: Fixed from version 4.20rc1" + +CVE_STATUS[CVE-2018-18955] = "fixed-version: Fixed from version 4.20rc2" + +CVE_STATUS[CVE-2018-19406] = "fixed-version: Fixed from version 4.20rc5" + +CVE_STATUS[CVE-2018-19407] = "fixed-version: Fixed from version 4.20rc5" + +CVE_STATUS[CVE-2018-19824] = "fixed-version: Fixed from version 4.20rc6" + +CVE_STATUS[CVE-2018-19854] = "fixed-version: Fixed from version 4.20rc3" + +CVE_STATUS[CVE-2018-19985] = "fixed-version: Fixed from version 4.20" + +CVE_STATUS[CVE-2018-20169] = "fixed-version: Fixed from version 4.20rc6" + +CVE_STATUS[CVE-2018-20449] = "fixed-version: Fixed from version 4.15rc2" + +CVE_STATUS[CVE-2018-20509] = "fixed-version: Fixed from version 4.14rc1" + +CVE_STATUS[CVE-2018-20510] = "fixed-version: Fixed from version 4.16rc3" + +CVE_STATUS[CVE-2018-20511] = "fixed-version: Fixed from version 4.19rc5" + +CVE_STATUS[CVE-2018-20669] = "fixed-version: Fixed from version 5.0rc1" + +CVE_STATUS[CVE-2018-20784] = "fixed-version: Fixed from version 5.0rc1" + +CVE_STATUS[CVE-2018-20836] = "fixed-version: Fixed from version 4.20rc1" + +CVE_STATUS[CVE-2018-20854] = "fixed-version: Fixed from version 4.20rc1" + +CVE_STATUS[CVE-2018-20855] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-20856] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-20961] = "fixed-version: Fixed from version 4.17rc1" + +CVE_STATUS[CVE-2018-20976] = "fixed-version: Fixed from version 4.18rc1" + +CVE_STATUS[CVE-2018-21008] = "fixed-version: Fixed from version 4.18rc1" + +CVE_STATUS[CVE-2018-25015] = "fixed-version: Fixed from version 4.15rc9" + +CVE_STATUS[CVE-2018-25020] = "fixed-version: Fixed from version 4.17rc7" + +# CVE-2018-3574 has no known resolution + +CVE_STATUS[CVE-2018-3620] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-3639] = "fixed-version: Fixed from version 4.17rc7" + +CVE_STATUS[CVE-2018-3646] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-3665] = "fixed-version: Fixed from version 3.7rc1" + +CVE_STATUS[CVE-2018-3693] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-5332] = "fixed-version: Fixed from version 4.15rc8" + +CVE_STATUS[CVE-2018-5333] = "fixed-version: Fixed from version 4.15rc8" + +CVE_STATUS[CVE-2018-5344] = "fixed-version: Fixed from version 4.15rc8" + +CVE_STATUS[CVE-2018-5390] = "fixed-version: Fixed from version 4.18rc7" + +CVE_STATUS[CVE-2018-5391] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-5703] = "fixed-version: Fixed from version 4.16rc5" + +CVE_STATUS[CVE-2018-5750] = "fixed-version: Fixed from version 4.16rc1" + +CVE_STATUS[CVE-2018-5803] = "fixed-version: Fixed from version 4.16rc1" + +CVE_STATUS[CVE-2018-5814] = "fixed-version: Fixed from version 4.17rc6" + +CVE_STATUS[CVE-2018-5848] = "fixed-version: Fixed from version 4.16rc1" + +# Skipping CVE-2018-5856, no affected_versions + +CVE_STATUS[CVE-2018-5873] = "fixed-version: Fixed from version 4.11rc8" + +CVE_STATUS[CVE-2018-5953] = "fixed-version: Fixed from version 4.15rc2" + +CVE_STATUS[CVE-2018-5995] = "fixed-version: Fixed from version 4.15rc2" + +CVE_STATUS[CVE-2018-6412] = "fixed-version: Fixed from version 4.16rc5" + +CVE_STATUS[CVE-2018-6554] = "fixed-version: Fixed from version 4.17rc1" + +CVE_STATUS[CVE-2018-6555] = "fixed-version: Fixed from version 4.17rc1" + +# CVE-2018-6559 has no known resolution + +CVE_STATUS[CVE-2018-6927] = "fixed-version: Fixed from version 4.15rc9" + +CVE_STATUS[CVE-2018-7191] = "fixed-version: Fixed from version 4.14rc6" + +CVE_STATUS[CVE-2018-7273] = "fixed-version: Fixed from version 4.15rc2" + +CVE_STATUS[CVE-2018-7480] = "fixed-version: Fixed from version 4.11rc1" + +CVE_STATUS[CVE-2018-7492] = "fixed-version: Fixed from version 4.15rc3" + +CVE_STATUS[CVE-2018-7566] = "fixed-version: Fixed from version 4.16rc2" + +CVE_STATUS[CVE-2018-7740] = "fixed-version: Fixed from version 4.16rc7" + +CVE_STATUS[CVE-2018-7754] = "fixed-version: Fixed from version 4.15rc2" + +CVE_STATUS[CVE-2018-7755] = "fixed-version: Fixed from version 4.19rc5" + +CVE_STATUS[CVE-2018-7757] = "fixed-version: Fixed from version 4.16rc1" + +CVE_STATUS[CVE-2018-7995] = "fixed-version: Fixed from version 4.16rc5" + +CVE_STATUS[CVE-2018-8043] = "fixed-version: Fixed from version 4.16rc1" + +CVE_STATUS[CVE-2018-8087] = "fixed-version: Fixed from version 4.16rc1" + +CVE_STATUS[CVE-2018-8781] = "fixed-version: Fixed from version 4.16rc7" + +CVE_STATUS[CVE-2018-8822] = "fixed-version: Fixed from version 4.16rc7" + +CVE_STATUS[CVE-2018-8897] = "fixed-version: Fixed from version 4.16rc7" + +CVE_STATUS[CVE-2018-9363] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2018-9385] = "fixed-version: Fixed from version 4.17rc3" + +CVE_STATUS[CVE-2018-9415] = "fixed-version: Fixed from version 4.17rc3" + +CVE_STATUS[CVE-2018-9422] = "fixed-version: Fixed from version 4.6rc1" + +CVE_STATUS[CVE-2018-9465] = "fixed-version: Fixed from version 4.15rc6" + +CVE_STATUS[CVE-2018-9516] = "fixed-version: Fixed from version 4.18rc5" + +CVE_STATUS[CVE-2018-9517] = "fixed-version: Fixed from version 4.14rc1" + +CVE_STATUS[CVE-2018-9518] = "fixed-version: Fixed from version 4.16rc3" + +CVE_STATUS[CVE-2018-9568] = "fixed-version: Fixed from version 4.14rc4" + +CVE_STATUS[CVE-2019-0136] = "fixed-version: Fixed from version 5.2rc6" + +CVE_STATUS[CVE-2019-0145] = "fixed-version: Fixed from version 5.2rc1" + +CVE_STATUS[CVE-2019-0146] = "fixed-version: Fixed from version 5.2rc1" + +CVE_STATUS[CVE-2019-0147] = "fixed-version: Fixed from version 5.2rc1" + +CVE_STATUS[CVE-2019-0148] = "fixed-version: Fixed from version 5.2rc1" + +CVE_STATUS[CVE-2019-0149] = "fixed-version: Fixed from version 5.3rc1" + +CVE_STATUS[CVE-2019-0154] = "fixed-version: Fixed from version 5.4rc8" + +CVE_STATUS[CVE-2019-0155] = "fixed-version: Fixed from version 5.4rc8" + +CVE_STATUS[CVE-2019-10124] = "fixed-version: Fixed from version 5.1rc1" + +CVE_STATUS[CVE-2019-10125] = "fixed-version: Fixed from version 5.1rc1" + +CVE_STATUS[CVE-2019-10126] = "fixed-version: Fixed from version 5.2rc6" + +# CVE-2019-10140 has no known resolution + +CVE_STATUS[CVE-2019-10142] = "fixed-version: Fixed from version 5.2rc1" + +CVE_STATUS[CVE-2019-10207] = "fixed-version: Fixed from version 5.3rc3" + +CVE_STATUS[CVE-2019-10220] = "fixed-version: Fixed from version 5.4rc2" + +CVE_STATUS[CVE-2019-10638] = "fixed-version: Fixed from version 5.2rc1" + +CVE_STATUS[CVE-2019-10639] = "fixed-version: Fixed from version 5.1rc4" + +CVE_STATUS[CVE-2019-11085] = "fixed-version: Fixed from version 5.0rc3" + +CVE_STATUS[CVE-2019-11091] = "fixed-version: Fixed from version 5.2rc1" + +CVE_STATUS[CVE-2019-11135] = "fixed-version: Fixed from version 5.4rc8" + +CVE_STATUS[CVE-2019-11190] = "fixed-version: Fixed from version 4.8rc5" + +CVE_STATUS[CVE-2019-11191] = "fixed-version: Fixed from version 5.1rc1" + +CVE_STATUS[CVE-2019-1125] = "fixed-version: Fixed from version 5.3rc4" + +CVE_STATUS[CVE-2019-11477] = "fixed-version: Fixed from version 5.2rc6" + +CVE_STATUS[CVE-2019-11478] = "fixed-version: Fixed from version 5.2rc6" + +CVE_STATUS[CVE-2019-11479] = "fixed-version: Fixed from version 5.2rc6" + +CVE_STATUS[CVE-2019-11486] = "fixed-version: Fixed from version 5.1rc4" + +CVE_STATUS[CVE-2019-11487] = "fixed-version: Fixed from version 5.1rc5" + +CVE_STATUS[CVE-2019-11599] = "fixed-version: Fixed from version 5.1rc6" + +CVE_STATUS[CVE-2019-11683] = "fixed-version: Fixed from version 5.1" + +CVE_STATUS[CVE-2019-11810] = "fixed-version: Fixed from version 5.1rc1" + +CVE_STATUS[CVE-2019-11811] = "fixed-version: Fixed from version 5.1rc1" + +CVE_STATUS[CVE-2019-11815] = "fixed-version: Fixed from version 5.1rc4" + +CVE_STATUS[CVE-2019-11833] = "fixed-version: Fixed from version 5.2rc1" + +CVE_STATUS[CVE-2019-11884] = "fixed-version: Fixed from version 5.2rc1" + +CVE_STATUS[CVE-2019-12378] = "fixed-version: Fixed from version 5.2rc3" + +CVE_STATUS[CVE-2019-12379] = "fixed-version: Fixed from version 5.3rc1" + +CVE_STATUS[CVE-2019-12380] = "fixed-version: Fixed from version 5.2rc3" + +CVE_STATUS[CVE-2019-12381] = "fixed-version: Fixed from version 5.2rc3" + +CVE_STATUS[CVE-2019-12382] = "fixed-version: Fixed from version 5.3rc1" + +CVE_STATUS[CVE-2019-12454] = "fixed-version: Fixed from version 5.3rc1" + +CVE_STATUS[CVE-2019-12455] = "fixed-version: Fixed from version 5.3rc1" + +# CVE-2019-12456 has no known resolution + +CVE_STATUS[CVE-2019-12614] = "fixed-version: Fixed from version 5.3rc1" + +CVE_STATUS[CVE-2019-12615] = "fixed-version: Fixed from version 5.2rc4" + +CVE_STATUS[CVE-2019-12817] = "fixed-version: Fixed from version 5.2rc7" + +CVE_STATUS[CVE-2019-12818] = "fixed-version: Fixed from version 5.0" + +CVE_STATUS[CVE-2019-12819] = "fixed-version: Fixed from version 5.0rc8" + +CVE_STATUS[CVE-2019-12881] = "fixed-version: Fixed from version 4.18rc1" + +CVE_STATUS[CVE-2019-12984] = "fixed-version: Fixed from version 5.2rc6" + +CVE_STATUS[CVE-2019-13233] = "fixed-version: Fixed from version 5.2rc4" + +CVE_STATUS[CVE-2019-13272] = "fixed-version: Fixed from version 5.2" + +CVE_STATUS[CVE-2019-13631] = "fixed-version: Fixed from version 5.3rc1" + +CVE_STATUS[CVE-2019-13648] = "fixed-version: Fixed from version 5.3rc2" + +CVE_STATUS[CVE-2019-14283] = "fixed-version: Fixed from version 5.3rc1" + +CVE_STATUS[CVE-2019-14284] = "fixed-version: Fixed from version 5.3rc1" + +CVE_STATUS[CVE-2019-14615] = "fixed-version: Fixed from version 5.5rc7" + +CVE_STATUS[CVE-2019-14763] = "fixed-version: Fixed from version 4.17rc1" + +CVE_STATUS[CVE-2019-14814] = "fixed-version: Fixed from version 5.3" + +CVE_STATUS[CVE-2019-14815] = "fixed-version: Fixed from version 5.3" + +CVE_STATUS[CVE-2019-14816] = "fixed-version: Fixed from version 5.3" + +CVE_STATUS[CVE-2019-14821] = "fixed-version: Fixed from version 5.4rc1" + +CVE_STATUS[CVE-2019-14835] = "fixed-version: Fixed from version 5.3" + +CVE_STATUS[CVE-2019-14895] = "fixed-version: Fixed from version 5.5rc3" + +CVE_STATUS[CVE-2019-14896] = "fixed-version: Fixed from version 5.5" + +CVE_STATUS[CVE-2019-14897] = "fixed-version: Fixed from version 5.5" + +# CVE-2019-14898 has no known resolution + +CVE_STATUS[CVE-2019-14901] = "fixed-version: Fixed from version 5.5rc3" + +CVE_STATUS[CVE-2019-15030] = "fixed-version: Fixed from version 5.3rc8" + +CVE_STATUS[CVE-2019-15031] = "fixed-version: Fixed from version 5.3rc8" + +CVE_STATUS[CVE-2019-15090] = "fixed-version: Fixed from version 5.2rc2" + +CVE_STATUS[CVE-2019-15098] = "fixed-version: Fixed from version 5.4rc1" + +CVE_STATUS[CVE-2019-15099] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-15117] = "fixed-version: Fixed from version 5.3rc5" + +CVE_STATUS[CVE-2019-15118] = "fixed-version: Fixed from version 5.3rc5" + +CVE_STATUS[CVE-2019-15211] = "fixed-version: Fixed from version 5.3rc1" + +CVE_STATUS[CVE-2019-15212] = "fixed-version: Fixed from version 5.2rc3" + +CVE_STATUS[CVE-2019-15213] = "fixed-version: Fixed from version 5.3rc1" + +CVE_STATUS[CVE-2019-15214] = "fixed-version: Fixed from version 5.1rc6" + +CVE_STATUS[CVE-2019-15215] = "fixed-version: Fixed from version 5.3rc1" + +CVE_STATUS[CVE-2019-15216] = "fixed-version: Fixed from version 5.1" + +CVE_STATUS[CVE-2019-15217] = "fixed-version: Fixed from version 5.3rc1" + +CVE_STATUS[CVE-2019-15218] = "fixed-version: Fixed from version 5.2rc3" + +CVE_STATUS[CVE-2019-15219] = "fixed-version: Fixed from version 5.2rc3" + +CVE_STATUS[CVE-2019-15220] = "fixed-version: Fixed from version 5.3rc1" + +CVE_STATUS[CVE-2019-15221] = "fixed-version: Fixed from version 5.2" + +CVE_STATUS[CVE-2019-15222] = "fixed-version: Fixed from version 5.3rc3" + +CVE_STATUS[CVE-2019-15223] = "fixed-version: Fixed from version 5.2rc3" + +# CVE-2019-15239 has no known resolution + +# CVE-2019-15290 has no known resolution + +CVE_STATUS[CVE-2019-15291] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-15292] = "fixed-version: Fixed from version 5.1rc1" + +CVE_STATUS[CVE-2019-15504] = "fixed-version: Fixed from version 5.3" + +CVE_STATUS[CVE-2019-15505] = "fixed-version: Fixed from version 5.4rc1" + +CVE_STATUS[CVE-2019-15538] = "fixed-version: Fixed from version 5.3rc6" + +CVE_STATUS[CVE-2019-15666] = "fixed-version: Fixed from version 5.1" + +# CVE-2019-15791 has no known resolution + +# CVE-2019-15792 has no known resolution + +# CVE-2019-15793 has no known resolution + +CVE_STATUS[CVE-2019-15794] = "fixed-version: Fixed from version 5.12" + +CVE_STATUS[CVE-2019-15807] = "fixed-version: Fixed from version 5.2rc3" + +# CVE-2019-15902 has no known resolution + +CVE_STATUS[CVE-2019-15916] = "fixed-version: Fixed from version 5.1rc1" + +CVE_STATUS[CVE-2019-15917] = "fixed-version: Fixed from version 5.1rc1" + +CVE_STATUS[CVE-2019-15918] = "fixed-version: Fixed from version 5.1rc6" + +CVE_STATUS[CVE-2019-15919] = "fixed-version: Fixed from version 5.1rc6" + +CVE_STATUS[CVE-2019-15920] = "fixed-version: Fixed from version 5.1rc6" + +CVE_STATUS[CVE-2019-15921] = "fixed-version: Fixed from version 5.1rc3" + +CVE_STATUS[CVE-2019-15922] = "fixed-version: Fixed from version 5.1rc4" + +CVE_STATUS[CVE-2019-15923] = "fixed-version: Fixed from version 5.1rc4" + +CVE_STATUS[CVE-2019-15924] = "fixed-version: Fixed from version 5.1rc4" + +CVE_STATUS[CVE-2019-15925] = "fixed-version: Fixed from version 5.3rc1" + +CVE_STATUS[CVE-2019-15926] = "fixed-version: Fixed from version 5.3rc1" + +CVE_STATUS[CVE-2019-15927] = "fixed-version: Fixed from version 5.0rc2" + +# CVE-2019-16089 has no known resolution + +CVE_STATUS[CVE-2019-16229] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-16230] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-16231] = "fixed-version: Fixed from version 5.4rc6" + +CVE_STATUS[CVE-2019-16232] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-16233] = "fixed-version: Fixed from version 5.4rc5" + +CVE_STATUS[CVE-2019-16234] = "fixed-version: Fixed from version 5.4rc4" + +CVE_STATUS[CVE-2019-16413] = "fixed-version: Fixed from version 5.1rc1" + +CVE_STATUS[CVE-2019-16714] = "fixed-version: Fixed from version 5.3rc7" + +CVE_STATUS[CVE-2019-16746] = "fixed-version: Fixed from version 5.4rc2" + +CVE_STATUS[CVE-2019-16921] = "fixed-version: Fixed from version 4.17rc1" + +CVE_STATUS[CVE-2019-16994] = "fixed-version: Fixed from version 5.0" + +CVE_STATUS[CVE-2019-16995] = "fixed-version: Fixed from version 5.1rc1" + +CVE_STATUS[CVE-2019-17052] = "fixed-version: Fixed from version 5.4rc1" + +CVE_STATUS[CVE-2019-17053] = "fixed-version: Fixed from version 5.4rc1" + +CVE_STATUS[CVE-2019-17054] = "fixed-version: Fixed from version 5.4rc1" + +CVE_STATUS[CVE-2019-17055] = "fixed-version: Fixed from version 5.4rc1" + +CVE_STATUS[CVE-2019-17056] = "fixed-version: Fixed from version 5.4rc1" + +CVE_STATUS[CVE-2019-17075] = "fixed-version: Fixed from version 5.4rc3" + +CVE_STATUS[CVE-2019-17133] = "fixed-version: Fixed from version 5.4rc4" + +CVE_STATUS[CVE-2019-17351] = "fixed-version: Fixed from version 5.3rc1" + +CVE_STATUS[CVE-2019-17666] = "fixed-version: Fixed from version 5.4rc6" + +CVE_STATUS[CVE-2019-18198] = "fixed-version: Fixed from version 5.4rc1" + +CVE_STATUS[CVE-2019-18282] = "fixed-version: Fixed from version 5.4rc6" + +CVE_STATUS[CVE-2019-18660] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-18675] = "fixed-version: Fixed from version 4.17rc5" + +# CVE-2019-18680 has no known resolution + +CVE_STATUS[CVE-2019-18683] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-18786] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-18805] = "fixed-version: Fixed from version 5.1rc7" + +CVE_STATUS[CVE-2019-18806] = "fixed-version: Fixed from version 5.4rc2" + +CVE_STATUS[CVE-2019-18807] = "fixed-version: Fixed from version 5.4rc2" + +CVE_STATUS[CVE-2019-18808] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-18809] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-18810] = "fixed-version: Fixed from version 5.4rc2" + +CVE_STATUS[CVE-2019-18811] = "fixed-version: Fixed from version 5.4rc7" + +CVE_STATUS[CVE-2019-18812] = "fixed-version: Fixed from version 5.4rc7" + +CVE_STATUS[CVE-2019-18813] = "fixed-version: Fixed from version 5.4rc6" + +CVE_STATUS[CVE-2019-18814] = "fixed-version: Fixed from version 5.7rc7" + +CVE_STATUS[CVE-2019-18885] = "fixed-version: Fixed from version 5.1rc1" + +CVE_STATUS[CVE-2019-19036] = "fixed-version: Fixed from version 5.4rc1" + +CVE_STATUS[CVE-2019-19037] = "fixed-version: Fixed from version 5.5rc3" + +CVE_STATUS[CVE-2019-19039] = "fixed-version: Fixed from version 5.7rc1" + +CVE_STATUS[CVE-2019-19043] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-19044] = "fixed-version: Fixed from version 5.4rc6" + +CVE_STATUS[CVE-2019-19045] = "fixed-version: Fixed from version 5.4rc6" + +CVE_STATUS[CVE-2019-19046] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-19047] = "fixed-version: Fixed from version 5.4rc6" + +CVE_STATUS[CVE-2019-19048] = "fixed-version: Fixed from version 5.4rc3" + +CVE_STATUS[CVE-2019-19049] = "fixed-version: Fixed from version 5.4rc5" + +CVE_STATUS[CVE-2019-19050] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-19051] = "fixed-version: Fixed from version 5.4rc6" + +CVE_STATUS[CVE-2019-19052] = "fixed-version: Fixed from version 5.4rc7" + +CVE_STATUS[CVE-2019-19053] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-19054] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-19055] = "fixed-version: Fixed from version 5.4rc4" + +CVE_STATUS[CVE-2019-19056] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-19057] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-19058] = "fixed-version: Fixed from version 5.4rc4" + +CVE_STATUS[CVE-2019-19059] = "fixed-version: Fixed from version 5.4rc4" + +CVE_STATUS[CVE-2019-19060] = "fixed-version: Fixed from version 5.4rc3" + +CVE_STATUS[CVE-2019-19061] = "fixed-version: Fixed from version 5.4rc3" + +CVE_STATUS[CVE-2019-19062] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-19063] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-19064] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-19065] = "fixed-version: Fixed from version 5.4rc3" + +CVE_STATUS[CVE-2019-19066] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-19067] = "fixed-version: Fixed from version 5.4rc2" + +CVE_STATUS[CVE-2019-19068] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-19069] = "fixed-version: Fixed from version 5.4rc3" + +CVE_STATUS[CVE-2019-19070] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-19071] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-19072] = "fixed-version: Fixed from version 5.4rc1" + +CVE_STATUS[CVE-2019-19073] = "fixed-version: Fixed from version 5.4rc1" + +CVE_STATUS[CVE-2019-19074] = "fixed-version: Fixed from version 5.4rc1" + +CVE_STATUS[CVE-2019-19075] = "fixed-version: Fixed from version 5.4rc2" + +CVE_STATUS[CVE-2019-19076] = "fixed-version: Fixed from version 5.4rc1" + +CVE_STATUS[CVE-2019-19077] = "fixed-version: Fixed from version 5.4rc1" + +CVE_STATUS[CVE-2019-19078] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-19079] = "fixed-version: Fixed from version 5.3" + +CVE_STATUS[CVE-2019-19080] = "fixed-version: Fixed from version 5.4rc1" + +CVE_STATUS[CVE-2019-19081] = "fixed-version: Fixed from version 5.4rc1" + +CVE_STATUS[CVE-2019-19082] = "fixed-version: Fixed from version 5.4rc1" + +CVE_STATUS[CVE-2019-19083] = "fixed-version: Fixed from version 5.4rc2" + +CVE_STATUS[CVE-2019-19227] = "fixed-version: Fixed from version 5.1rc3" + +CVE_STATUS[CVE-2019-19241] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-19252] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-19318] = "fixed-version: Fixed from version 5.4rc1" + +CVE_STATUS[CVE-2019-19319] = "fixed-version: Fixed from version 5.2rc1" + +CVE_STATUS[CVE-2019-19332] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-19338] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-19377] = "fixed-version: Fixed from version 5.7rc1" + +# CVE-2019-19378 has no known resolution + +CVE_STATUS[CVE-2019-19447] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-19448] = "fixed-version: Fixed from version 5.9rc1" + +CVE_STATUS[CVE-2019-19449] = "fixed-version: Fixed from version 5.10rc1" + +CVE_STATUS[CVE-2019-19462] = "fixed-version: Fixed from version 5.8rc1" + +CVE_STATUS[CVE-2019-19523] = "fixed-version: Fixed from version 5.4rc3" + +CVE_STATUS[CVE-2019-19524] = "fixed-version: Fixed from version 5.4rc8" + +CVE_STATUS[CVE-2019-19525] = "fixed-version: Fixed from version 5.4rc2" + +CVE_STATUS[CVE-2019-19526] = "fixed-version: Fixed from version 5.4rc4" + +CVE_STATUS[CVE-2019-19527] = "fixed-version: Fixed from version 5.3rc4" + +CVE_STATUS[CVE-2019-19528] = "fixed-version: Fixed from version 5.4rc3" + +CVE_STATUS[CVE-2019-19529] = "fixed-version: Fixed from version 5.4rc7" + +CVE_STATUS[CVE-2019-19530] = "fixed-version: Fixed from version 5.3rc5" + +CVE_STATUS[CVE-2019-19531] = "fixed-version: Fixed from version 5.3rc4" + +CVE_STATUS[CVE-2019-19532] = "fixed-version: Fixed from version 5.4rc6" + +CVE_STATUS[CVE-2019-19533] = "fixed-version: Fixed from version 5.4rc1" + +CVE_STATUS[CVE-2019-19534] = "fixed-version: Fixed from version 5.4rc7" + +CVE_STATUS[CVE-2019-19535] = "fixed-version: Fixed from version 5.3rc4" + +CVE_STATUS[CVE-2019-19536] = "fixed-version: Fixed from version 5.3rc4" + +CVE_STATUS[CVE-2019-19537] = "fixed-version: Fixed from version 5.3rc5" + +CVE_STATUS[CVE-2019-19543] = "fixed-version: Fixed from version 5.2rc1" + +CVE_STATUS[CVE-2019-19602] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-19767] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2019-19768] = "fixed-version: Fixed from version 5.6rc4" + +CVE_STATUS[CVE-2019-19769] = "fixed-version: Fixed from version 5.6rc5" + +CVE_STATUS[CVE-2019-19770] = "fixed-version: Fixed from version 5.9rc1" + +CVE_STATUS[CVE-2019-19807] = "fixed-version: Fixed from version 5.4rc7" + +CVE_STATUS[CVE-2019-19813] = "fixed-version: Fixed from version 5.2rc1" + +# CVE-2019-19814 has no known resolution + +CVE_STATUS[CVE-2019-19815] = "fixed-version: Fixed from version 5.3rc1" + +CVE_STATUS[CVE-2019-19816] = "fixed-version: Fixed from version 5.2rc1" + +CVE_STATUS[CVE-2019-19922] = "fixed-version: Fixed from version 5.4rc1" + +CVE_STATUS[CVE-2019-19927] = "fixed-version: Fixed from version 5.1rc6" + +CVE_STATUS[CVE-2019-19947] = "fixed-version: Fixed from version 5.5rc3" + +CVE_STATUS[CVE-2019-19965] = "fixed-version: Fixed from version 5.5rc2" + +CVE_STATUS[CVE-2019-19966] = "fixed-version: Fixed from version 5.2rc1" + +CVE_STATUS[CVE-2019-1999] = "fixed-version: Fixed from version 5.1rc3" + +CVE_STATUS[CVE-2019-20054] = "fixed-version: Fixed from version 5.1rc3" + +CVE_STATUS[CVE-2019-20095] = "fixed-version: Fixed from version 5.2rc1" + +CVE_STATUS[CVE-2019-20096] = "fixed-version: Fixed from version 5.1rc4" + +CVE_STATUS[CVE-2019-2024] = "fixed-version: Fixed from version 4.16rc1" + +CVE_STATUS[CVE-2019-2025] = "fixed-version: Fixed from version 4.20rc5" + +CVE_STATUS[CVE-2019-20422] = "fixed-version: Fixed from version 5.4rc1" + +CVE_STATUS[CVE-2019-2054] = "fixed-version: Fixed from version 4.8rc1" + +CVE_STATUS[CVE-2019-20636] = "fixed-version: Fixed from version 5.5rc6" + +# CVE-2019-20794 has no known resolution + +CVE_STATUS[CVE-2019-20806] = "fixed-version: Fixed from version 5.2rc1" + +CVE_STATUS[CVE-2019-20810] = "fixed-version: Fixed from version 5.6rc1" + +CVE_STATUS[CVE-2019-20811] = "fixed-version: Fixed from version 5.1rc3" + +CVE_STATUS[CVE-2019-20812] = "fixed-version: Fixed from version 5.5rc3" + +CVE_STATUS[CVE-2019-20908] = "fixed-version: Fixed from version 5.4rc1" + +CVE_STATUS[CVE-2019-20934] = "fixed-version: Fixed from version 5.3rc2" + +CVE_STATUS[CVE-2019-2101] = "fixed-version: Fixed from version 5.1rc1" + +CVE_STATUS[CVE-2019-2181] = "fixed-version: Fixed from version 5.2rc1" + +CVE_STATUS[CVE-2019-2182] = "fixed-version: Fixed from version 4.16rc3" + +CVE_STATUS[CVE-2019-2213] = "fixed-version: Fixed from version 5.2rc6" + +CVE_STATUS[CVE-2019-2214] = "fixed-version: Fixed from version 5.3rc2" + +CVE_STATUS[CVE-2019-2215] = "fixed-version: Fixed from version 4.16rc1" + +CVE_STATUS[CVE-2019-25044] = "fixed-version: Fixed from version 5.2rc4" + +CVE_STATUS[CVE-2019-25045] = "fixed-version: Fixed from version 5.1" + +CVE_STATUS[CVE-2019-3016] = "fixed-version: Fixed from version 5.6rc1" + +CVE_STATUS[CVE-2019-3459] = "fixed-version: Fixed from version 5.1rc1" + +CVE_STATUS[CVE-2019-3460] = "fixed-version: Fixed from version 5.1rc1" + +CVE_STATUS[CVE-2019-3701] = "fixed-version: Fixed from version 5.0rc3" + +CVE_STATUS[CVE-2019-3819] = "fixed-version: Fixed from version 5.0rc6" + +CVE_STATUS[CVE-2019-3837] = "fixed-version: Fixed from version 3.18rc1" + +CVE_STATUS[CVE-2019-3846] = "fixed-version: Fixed from version 5.2rc6" + +CVE_STATUS[CVE-2019-3874] = "fixed-version: Fixed from version 5.2rc1" + +CVE_STATUS[CVE-2019-3882] = "fixed-version: Fixed from version 5.1rc4" + +CVE_STATUS[CVE-2019-3887] = "fixed-version: Fixed from version 5.1rc4" + +CVE_STATUS[CVE-2019-3892] = "fixed-version: Fixed from version 5.1rc6" + +CVE_STATUS[CVE-2019-3896] = "fixed-version: Fixed from version 2.6.35rc1" + +CVE_STATUS[CVE-2019-3900] = "fixed-version: Fixed from version 5.2rc4" + +CVE_STATUS[CVE-2019-3901] = "fixed-version: Fixed from version 4.6rc6" + +CVE_STATUS[CVE-2019-5108] = "fixed-version: Fixed from version 5.3" + +# Skipping CVE-2019-5489, no affected_versions + +CVE_STATUS[CVE-2019-6133] = "fixed-version: Fixed from version 5.0rc2" + +CVE_STATUS[CVE-2019-6974] = "fixed-version: Fixed from version 5.0rc6" + +CVE_STATUS[CVE-2019-7221] = "fixed-version: Fixed from version 5.0rc6" + +CVE_STATUS[CVE-2019-7222] = "fixed-version: Fixed from version 5.0rc6" + +CVE_STATUS[CVE-2019-7308] = "fixed-version: Fixed from version 5.0rc3" + +CVE_STATUS[CVE-2019-8912] = "fixed-version: Fixed from version 5.0rc8" + +CVE_STATUS[CVE-2019-8956] = "fixed-version: Fixed from version 5.0rc6" + +CVE_STATUS[CVE-2019-8980] = "fixed-version: Fixed from version 5.1rc1" + +CVE_STATUS[CVE-2019-9003] = "fixed-version: Fixed from version 5.0rc4" + +CVE_STATUS[CVE-2019-9162] = "fixed-version: Fixed from version 5.0rc7" + +CVE_STATUS[CVE-2019-9213] = "fixed-version: Fixed from version 5.0" + +CVE_STATUS[CVE-2019-9245] = "fixed-version: Fixed from version 5.0rc1" + +CVE_STATUS[CVE-2019-9444] = "fixed-version: Fixed from version 4.15rc2" + +CVE_STATUS[CVE-2019-9445] = "fixed-version: Fixed from version 5.1rc1" + +CVE_STATUS[CVE-2019-9453] = "fixed-version: Fixed from version 5.2rc1" + +CVE_STATUS[CVE-2019-9454] = "fixed-version: Fixed from version 4.15rc9" + +CVE_STATUS[CVE-2019-9455] = "fixed-version: Fixed from version 5.0rc1" + +CVE_STATUS[CVE-2019-9456] = "fixed-version: Fixed from version 4.16rc6" + +CVE_STATUS[CVE-2019-9457] = "fixed-version: Fixed from version 4.13rc1" + +CVE_STATUS[CVE-2019-9458] = "fixed-version: Fixed from version 4.19rc7" + +CVE_STATUS[CVE-2019-9466] = "fixed-version: Fixed from version 5.1rc1" + +CVE_STATUS[CVE-2019-9500] = "fixed-version: Fixed from version 5.1rc1" + +CVE_STATUS[CVE-2019-9503] = "fixed-version: Fixed from version 5.1rc1" + +CVE_STATUS[CVE-2019-9506] = "fixed-version: Fixed from version 5.2" + +CVE_STATUS[CVE-2019-9857] = "fixed-version: Fixed from version 5.1rc2" + +CVE_STATUS[CVE-2020-0009] = "fixed-version: Fixed from version 5.6rc3" + +CVE_STATUS[CVE-2020-0030] = "fixed-version: Fixed from version 4.16rc3" + +CVE_STATUS[CVE-2020-0041] = "fixed-version: Fixed from version 5.5rc2" + +CVE_STATUS[CVE-2020-0066] = "fixed-version: Fixed from version 4.3rc7" + +CVE_STATUS[CVE-2020-0067] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2020-0110] = "fixed-version: Fixed from version 5.6rc2" + +CVE_STATUS[CVE-2020-0255] = "fixed-version: Fixed from version 5.7rc4" + +CVE_STATUS[CVE-2020-0305] = "fixed-version: Fixed from version 5.5rc6" + +# CVE-2020-0347 has no known resolution + +CVE_STATUS[CVE-2020-0404] = "fixed-version: Fixed from version 5.6rc1" + +CVE_STATUS[CVE-2020-0423] = "fixed-version: Fixed from version 5.10rc1" + +CVE_STATUS[CVE-2020-0427] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2020-0429] = "fixed-version: Fixed from version 4.14rc4" + +CVE_STATUS[CVE-2020-0430] = "fixed-version: Fixed from version 4.18rc1" + +CVE_STATUS[CVE-2020-0431] = "fixed-version: Fixed from version 5.5rc6" + +CVE_STATUS[CVE-2020-0432] = "fixed-version: Fixed from version 5.6rc1" + +CVE_STATUS[CVE-2020-0433] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2020-0435] = "fixed-version: Fixed from version 4.19rc1" + +CVE_STATUS[CVE-2020-0444] = "fixed-version: Fixed from version 5.6rc4" + +CVE_STATUS[CVE-2020-0465] = "fixed-version: Fixed from version 5.9rc4" + +CVE_STATUS[CVE-2020-0466] = "fixed-version: Fixed from version 5.9rc2" + +CVE_STATUS[CVE-2020-0543] = "fixed-version: Fixed from version 5.8rc1" + +CVE_STATUS[CVE-2020-10135] = "fixed-version: Fixed from version 5.8rc1" + +CVE_STATUS[CVE-2020-10690] = "fixed-version: Fixed from version 5.5rc5" + +# CVE-2020-10708 has no known resolution + +CVE_STATUS[CVE-2020-10711] = "fixed-version: Fixed from version 5.7rc6" + +CVE_STATUS[CVE-2020-10720] = "fixed-version: Fixed from version 5.2rc3" + +CVE_STATUS[CVE-2020-10732] = "fixed-version: Fixed from version 5.7" + +CVE_STATUS[CVE-2020-10742] = "fixed-version: Fixed from version 3.16rc1" + +CVE_STATUS[CVE-2020-10751] = "fixed-version: Fixed from version 5.7rc4" + +CVE_STATUS[CVE-2020-10757] = "fixed-version: Fixed from version 5.8rc1" + +CVE_STATUS[CVE-2020-10766] = "fixed-version: Fixed from version 5.8rc1" + +CVE_STATUS[CVE-2020-10767] = "fixed-version: Fixed from version 5.8rc1" + +CVE_STATUS[CVE-2020-10768] = "fixed-version: Fixed from version 5.8rc1" + +CVE_STATUS[CVE-2020-10769] = "fixed-version: Fixed from version 5.0rc3" + +CVE_STATUS[CVE-2020-10773] = "fixed-version: Fixed from version 5.4rc6" + +# CVE-2020-10774 has no known resolution + +CVE_STATUS[CVE-2020-10781] = "fixed-version: Fixed from version 5.8rc6" + +CVE_STATUS[CVE-2020-10942] = "fixed-version: Fixed from version 5.6rc4" + +CVE_STATUS[CVE-2020-11494] = "fixed-version: Fixed from version 5.7rc1" + +CVE_STATUS[CVE-2020-11565] = "fixed-version: Fixed from version 5.7rc1" + +CVE_STATUS[CVE-2020-11608] = "fixed-version: Fixed from version 5.7rc1" + +CVE_STATUS[CVE-2020-11609] = "fixed-version: Fixed from version 5.7rc1" + +CVE_STATUS[CVE-2020-11668] = "fixed-version: Fixed from version 5.7rc1" + +CVE_STATUS[CVE-2020-11669] = "fixed-version: Fixed from version 5.2rc1" + +# CVE-2020-11725 has no known resolution + +CVE_STATUS[CVE-2020-11884] = "fixed-version: Fixed from version 5.7rc4" + +# CVE-2020-11935 has no known resolution + +CVE_STATUS[CVE-2020-12114] = "fixed-version: Fixed from version 5.3rc1" + +CVE_STATUS[CVE-2020-12351] = "fixed-version: Fixed from version 5.10rc1" + +CVE_STATUS[CVE-2020-12352] = "fixed-version: Fixed from version 5.10rc1" + +CVE_STATUS[CVE-2020-12362] = "fixed-version: Fixed from version 5.11rc1" + +CVE_STATUS[CVE-2020-12363] = "fixed-version: Fixed from version 5.11rc1" + +CVE_STATUS[CVE-2020-12364] = "fixed-version: Fixed from version 5.11rc1" + +CVE_STATUS[CVE-2020-12464] = "fixed-version: Fixed from version 5.7rc3" + +CVE_STATUS[CVE-2020-12465] = "fixed-version: Fixed from version 5.6rc6" + +CVE_STATUS[CVE-2020-12652] = "fixed-version: Fixed from version 5.5rc7" + +CVE_STATUS[CVE-2020-12653] = "fixed-version: Fixed from version 5.6rc1" + +CVE_STATUS[CVE-2020-12654] = "fixed-version: Fixed from version 5.6rc1" + +CVE_STATUS[CVE-2020-12655] = "fixed-version: Fixed from version 5.7rc1" + +CVE_STATUS[CVE-2020-12656] = "fixed-version: Fixed from version 5.8rc1" + +CVE_STATUS[CVE-2020-12657] = "fixed-version: Fixed from version 5.7rc1" + +CVE_STATUS[CVE-2020-12659] = "fixed-version: Fixed from version 5.7rc2" + +CVE_STATUS[CVE-2020-12768] = "fixed-version: Fixed from version 5.6rc4" + +CVE_STATUS[CVE-2020-12769] = "fixed-version: Fixed from version 5.5rc6" + +CVE_STATUS[CVE-2020-12770] = "fixed-version: Fixed from version 5.7rc3" + +CVE_STATUS[CVE-2020-12771] = "fixed-version: Fixed from version 5.8rc2" + +CVE_STATUS[CVE-2020-12826] = "fixed-version: Fixed from version 5.7rc1" + +CVE_STATUS[CVE-2020-12888] = "fixed-version: Fixed from version 5.8rc1" + +CVE_STATUS[CVE-2020-12912] = "fixed-version: Fixed from version 5.10rc4" + +CVE_STATUS[CVE-2020-13143] = "fixed-version: Fixed from version 5.7rc6" + +CVE_STATUS[CVE-2020-13974] = "fixed-version: Fixed from version 5.8rc1" + +# CVE-2020-14304 has no known resolution + +CVE_STATUS[CVE-2020-14305] = "fixed-version: Fixed from version 4.12rc1" + +CVE_STATUS[CVE-2020-14314] = "fixed-version: Fixed from version 5.9rc2" + +CVE_STATUS[CVE-2020-14331] = "fixed-version: Fixed from version 5.9rc1" + +CVE_STATUS[CVE-2020-14351] = "fixed-version: Fixed from version 5.10rc1" + +CVE_STATUS[CVE-2020-14353] = "fixed-version: Fixed from version 4.14rc3" + +CVE_STATUS[CVE-2020-14356] = "fixed-version: Fixed from version 5.8rc5" + +CVE_STATUS[CVE-2020-14381] = "fixed-version: Fixed from version 5.6rc6" + +CVE_STATUS[CVE-2020-14385] = "fixed-version: Fixed from version 5.9rc4" + +CVE_STATUS[CVE-2020-14386] = "fixed-version: Fixed from version 5.9rc4" + +CVE_STATUS[CVE-2020-14390] = "fixed-version: Fixed from version 5.9rc6" + +CVE_STATUS[CVE-2020-14416] = "fixed-version: Fixed from version 5.5" + +CVE_STATUS[CVE-2020-15393] = "fixed-version: Fixed from version 5.8rc3" + +CVE_STATUS[CVE-2020-15436] = "fixed-version: Fixed from version 5.8rc2" + +CVE_STATUS[CVE-2020-15437] = "fixed-version: Fixed from version 5.8rc7" + +CVE_STATUS[CVE-2020-15780] = "fixed-version: Fixed from version 5.8rc3" + +# CVE-2020-15802 has no known resolution + +CVE_STATUS[CVE-2020-15852] = "fixed-version: Fixed from version 5.8rc6" + +CVE_STATUS[CVE-2020-16119] = "fixed-version: Fixed from version 5.15rc2" + +CVE_STATUS[CVE-2020-16120] = "fixed-version: Fixed from version 5.8rc1" + +CVE_STATUS[CVE-2020-16166] = "fixed-version: Fixed from version 5.8" + +CVE_STATUS[CVE-2020-1749] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2020-24394] = "fixed-version: Fixed from version 5.8rc4" + +CVE_STATUS[CVE-2020-24490] = "fixed-version: Fixed from version 5.8" + +# CVE-2020-24502 has no known resolution + +# CVE-2020-24503 has no known resolution + +CVE_STATUS[CVE-2020-24504] = "fixed-version: Fixed from version 5.12rc1" + +CVE_STATUS[CVE-2020-24586] = "fixed-version: Fixed from version 5.13rc4" + +CVE_STATUS[CVE-2020-24587] = "fixed-version: Fixed from version 5.13rc4" + +CVE_STATUS[CVE-2020-24588] = "fixed-version: Fixed from version 5.13rc4" + +CVE_STATUS[CVE-2020-25211] = "fixed-version: Fixed from version 5.9rc7" + +CVE_STATUS[CVE-2020-25212] = "fixed-version: Fixed from version 5.9rc1" + +# CVE-2020-25220 has no known resolution + +CVE_STATUS[CVE-2020-25221] = "fixed-version: Fixed from version 5.9rc4" + +CVE_STATUS[CVE-2020-25284] = "fixed-version: Fixed from version 5.9rc5" + +CVE_STATUS[CVE-2020-25285] = "fixed-version: Fixed from version 5.9rc4" + +CVE_STATUS[CVE-2020-25639] = "fixed-version: Fixed from version 5.12rc1" + +CVE_STATUS[CVE-2020-25641] = "fixed-version: Fixed from version 5.9rc4" + +CVE_STATUS[CVE-2020-25643] = "fixed-version: Fixed from version 5.9rc7" + +CVE_STATUS[CVE-2020-25645] = "fixed-version: Fixed from version 5.9rc7" + +CVE_STATUS[CVE-2020-25656] = "fixed-version: Fixed from version 5.10rc2" + +# CVE-2020-25661 has no known resolution + +# CVE-2020-25662 has no known resolution + +CVE_STATUS[CVE-2020-25668] = "fixed-version: Fixed from version 5.10rc3" + +CVE_STATUS[CVE-2020-25669] = "fixed-version: Fixed from version 5.10rc5" + +CVE_STATUS[CVE-2020-25670] = "fixed-version: Fixed from version 5.12rc7" + +CVE_STATUS[CVE-2020-25671] = "fixed-version: Fixed from version 5.12rc7" + +CVE_STATUS[CVE-2020-25672] = "fixed-version: Fixed from version 5.12rc7" + +CVE_STATUS[CVE-2020-25673] = "fixed-version: Fixed from version 5.12rc7" + +CVE_STATUS[CVE-2020-25704] = "fixed-version: Fixed from version 5.10rc3" + +CVE_STATUS[CVE-2020-25705] = "fixed-version: Fixed from version 5.10rc1" + +CVE_STATUS[CVE-2020-26088] = "fixed-version: Fixed from version 5.9rc1" + +CVE_STATUS[CVE-2020-26139] = "fixed-version: Fixed from version 5.13rc4" + +# CVE-2020-26140 has no known resolution + +CVE_STATUS[CVE-2020-26141] = "fixed-version: Fixed from version 5.13rc4" + +# CVE-2020-26142 has no known resolution + +# CVE-2020-26143 has no known resolution + +CVE_STATUS[CVE-2020-26145] = "fixed-version: Fixed from version 5.13rc4" + +CVE_STATUS[CVE-2020-26147] = "fixed-version: Fixed from version 5.13rc4" + +CVE_STATUS[CVE-2020-26541] = "fixed-version: Fixed from version 5.13rc1" + +CVE_STATUS[CVE-2020-26555] = "fixed-version: Fixed from version 5.13rc1" + +# CVE-2020-26556 has no known resolution + +# CVE-2020-26557 has no known resolution + +CVE_STATUS[CVE-2020-26558] = "fixed-version: Fixed from version 5.13rc1" + +# CVE-2020-26559 has no known resolution + +# CVE-2020-26560 has no known resolution + +CVE_STATUS[CVE-2020-27066] = "fixed-version: Fixed from version 5.6" + +CVE_STATUS[CVE-2020-27067] = "fixed-version: Fixed from version 4.14rc4" + +CVE_STATUS[CVE-2020-27068] = "fixed-version: Fixed from version 5.6rc2" + +CVE_STATUS[CVE-2020-27152] = "fixed-version: Fixed from version 5.10rc1" + +CVE_STATUS[CVE-2020-27170] = "fixed-version: Fixed from version 5.12rc5" + +CVE_STATUS[CVE-2020-27171] = "fixed-version: Fixed from version 5.12rc5" + +CVE_STATUS[CVE-2020-27194] = "fixed-version: Fixed from version 5.9" + +CVE_STATUS[CVE-2020-2732] = "fixed-version: Fixed from version 5.6rc4" + +CVE_STATUS[CVE-2020-27418] = "fixed-version: Fixed from version 5.6rc5" + +CVE_STATUS[CVE-2020-27673] = "fixed-version: Fixed from version 5.10rc1" + +CVE_STATUS[CVE-2020-27675] = "fixed-version: Fixed from version 5.10rc1" + +CVE_STATUS[CVE-2020-27777] = "fixed-version: Fixed from version 5.10rc1" + +CVE_STATUS[CVE-2020-27784] = "fixed-version: Fixed from version 5.10rc1" + +CVE_STATUS[CVE-2020-27786] = "fixed-version: Fixed from version 5.7rc6" + +CVE_STATUS[CVE-2020-27815] = "fixed-version: Fixed from version 5.11rc1" + +CVE_STATUS[CVE-2020-27820] = "fixed-version: Fixed from version 5.16rc1" + +CVE_STATUS[CVE-2020-27825] = "fixed-version: Fixed from version 5.10rc1" + +CVE_STATUS[CVE-2020-27830] = "fixed-version: Fixed from version 5.10rc7" + +CVE_STATUS[CVE-2020-27835] = "fixed-version: Fixed from version 5.10rc6" + +CVE_STATUS[CVE-2020-28097] = "fixed-version: Fixed from version 5.9rc6" + +CVE_STATUS[CVE-2020-28374] = "fixed-version: Fixed from version 5.11rc4" + +CVE_STATUS[CVE-2020-28588] = "fixed-version: Fixed from version 5.10rc7" + +CVE_STATUS[CVE-2020-28915] = "fixed-version: Fixed from version 5.9" + +CVE_STATUS[CVE-2020-28941] = "fixed-version: Fixed from version 5.10rc5" + +CVE_STATUS[CVE-2020-28974] = "fixed-version: Fixed from version 5.10rc3" + +CVE_STATUS[CVE-2020-29368] = "fixed-version: Fixed from version 5.8rc1" + +CVE_STATUS[CVE-2020-29369] = "fixed-version: Fixed from version 5.8rc7" + +CVE_STATUS[CVE-2020-29370] = "fixed-version: Fixed from version 5.6rc7" + +CVE_STATUS[CVE-2020-29371] = "fixed-version: Fixed from version 5.9rc2" + +CVE_STATUS[CVE-2020-29372] = "fixed-version: Fixed from version 5.7rc3" + +CVE_STATUS[CVE-2020-29373] = "fixed-version: Fixed from version 5.6rc2" + +CVE_STATUS[CVE-2020-29374] = "fixed-version: Fixed from version 5.8rc1" + +CVE_STATUS[CVE-2020-29534] = "fixed-version: Fixed from version 5.10rc1" + +CVE_STATUS[CVE-2020-29568] = "fixed-version: Fixed from version 5.11rc1" + +CVE_STATUS[CVE-2020-29569] = "fixed-version: Fixed from version 5.11rc1" + +CVE_STATUS[CVE-2020-29660] = "fixed-version: Fixed from version 5.10rc7" + +CVE_STATUS[CVE-2020-29661] = "fixed-version: Fixed from version 5.10rc7" + +CVE_STATUS[CVE-2020-35499] = "fixed-version: Fixed from version 5.11rc1" + +# CVE-2020-35501 has no known resolution + +CVE_STATUS[CVE-2020-35508] = "fixed-version: Fixed from version 5.10rc3" + +CVE_STATUS[CVE-2020-35513] = "fixed-version: Fixed from version 4.17rc1" + +CVE_STATUS[CVE-2020-35519] = "fixed-version: Fixed from version 5.10rc7" + +CVE_STATUS[CVE-2020-36158] = "fixed-version: Fixed from version 5.11rc1" + +CVE_STATUS[CVE-2020-36310] = "fixed-version: Fixed from version 5.8rc1" + +CVE_STATUS[CVE-2020-36311] = "fixed-version: Fixed from version 5.9rc5" + +CVE_STATUS[CVE-2020-36312] = "fixed-version: Fixed from version 5.9rc5" + +CVE_STATUS[CVE-2020-36313] = "fixed-version: Fixed from version 5.7rc1" + +CVE_STATUS[CVE-2020-36322] = "fixed-version: Fixed from version 5.11rc1" + +CVE_STATUS[CVE-2020-36385] = "fixed-version: Fixed from version 5.10rc1" + +CVE_STATUS[CVE-2020-36386] = "fixed-version: Fixed from version 5.9rc1" + +CVE_STATUS[CVE-2020-36387] = "fixed-version: Fixed from version 5.9rc1" + +CVE_STATUS[CVE-2020-36516] = "fixed-version: Fixed from version 5.17rc2" + +CVE_STATUS[CVE-2020-36557] = "fixed-version: Fixed from version 5.7rc1" + +CVE_STATUS[CVE-2020-36558] = "fixed-version: Fixed from version 5.6rc3" + +CVE_STATUS[CVE-2020-36691] = "fixed-version: Fixed from version 5.8rc1" + +CVE_STATUS[CVE-2020-36694] = "fixed-version: Fixed from version 5.10" + +CVE_STATUS[CVE-2020-36766] = "fixed-version: Fixed from version 5.9rc1" + +CVE_STATUS[CVE-2020-3702] = "fixed-version: Fixed from version 5.12rc1" + +CVE_STATUS[CVE-2020-4788] = "fixed-version: Fixed from version 5.10rc5" + +CVE_STATUS[CVE-2020-7053] = "fixed-version: Fixed from version 5.2rc1" + +CVE_STATUS[CVE-2020-8428] = "fixed-version: Fixed from version 5.5" + +CVE_STATUS[CVE-2020-8647] = "fixed-version: Fixed from version 5.6rc5" + +CVE_STATUS[CVE-2020-8648] = "fixed-version: Fixed from version 5.6rc3" + +CVE_STATUS[CVE-2020-8649] = "fixed-version: Fixed from version 5.6rc5" + +CVE_STATUS[CVE-2020-8694] = "fixed-version: Fixed from version 5.10rc4" + +# CVE-2020-8832 has no known resolution + +CVE_STATUS[CVE-2020-8834] = "fixed-version: Fixed from version 4.18rc1" + +CVE_STATUS[CVE-2020-8835] = "fixed-version: Fixed from version 5.7rc1" + +CVE_STATUS[CVE-2020-8992] = "fixed-version: Fixed from version 5.6rc2" + +CVE_STATUS[CVE-2020-9383] = "fixed-version: Fixed from version 5.6rc4" + +CVE_STATUS[CVE-2020-9391] = "fixed-version: Fixed from version 5.6rc3" + +CVE_STATUS[CVE-2021-0129] = "fixed-version: Fixed from version 5.13rc1" + +CVE_STATUS[CVE-2021-0342] = "fixed-version: Fixed from version 5.8rc1" + +# CVE-2021-0399 has no known resolution + +CVE_STATUS[CVE-2021-0447] = "fixed-version: Fixed from version 4.15rc1" + +CVE_STATUS[CVE-2021-0448] = "fixed-version: Fixed from version 5.9rc7" + +CVE_STATUS[CVE-2021-0512] = "fixed-version: Fixed from version 5.12rc1" + +CVE_STATUS[CVE-2021-0605] = "fixed-version: Fixed from version 5.8" + +# CVE-2021-0606 has no known resolution + +# CVE-2021-0695 has no known resolution + +CVE_STATUS[CVE-2021-0707] = "fixed-version: Fixed from version 5.11rc3" + +CVE_STATUS[CVE-2021-0920] = "fixed-version: Fixed from version 5.14rc4" + +# CVE-2021-0924 has no known resolution + +CVE_STATUS[CVE-2021-0929] = "fixed-version: Fixed from version 5.6rc1" + +CVE_STATUS[CVE-2021-0935] = "fixed-version: Fixed from version 4.16rc7" + +# CVE-2021-0936 has no known resolution + +CVE_STATUS[CVE-2021-0937] = "fixed-version: Fixed from version 5.12rc8" + +CVE_STATUS[CVE-2021-0938] = "fixed-version: Fixed from version 5.10rc4" + +CVE_STATUS[CVE-2021-0941] = "fixed-version: Fixed from version 5.12rc1" + +# CVE-2021-0961 has no known resolution + +CVE_STATUS[CVE-2021-1048] = "fixed-version: Fixed from version 5.9rc4" + +CVE_STATUS[CVE-2021-20177] = "fixed-version: Fixed from version 5.5rc1" + +CVE_STATUS[CVE-2021-20194] = "fixed-version: Fixed from version 5.10rc1" + +# CVE-2021-20219 has no known resolution + +CVE_STATUS[CVE-2021-20226] = "fixed-version: Fixed from version 5.10rc1" + +CVE_STATUS[CVE-2021-20239] = "fixed-version: Fixed from version 5.9rc1" + +CVE_STATUS[CVE-2021-20261] = "fixed-version: Fixed from version 4.5rc5" + +CVE_STATUS[CVE-2021-20265] = "fixed-version: Fixed from version 4.5rc3" + +CVE_STATUS[CVE-2021-20268] = "fixed-version: Fixed from version 5.11rc5" + +CVE_STATUS[CVE-2021-20292] = "fixed-version: Fixed from version 5.9rc1" + +CVE_STATUS[CVE-2021-20317] = "fixed-version: Fixed from version 5.4rc1" + +CVE_STATUS[CVE-2021-20320] = "fixed-version: Fixed from version 5.15rc3" + +CVE_STATUS[CVE-2021-20321] = "fixed-version: Fixed from version 5.15rc5" + +CVE_STATUS[CVE-2021-20322] = "fixed-version: Fixed from version 5.15rc1" + +CVE_STATUS[CVE-2021-21781] = "fixed-version: Fixed from version 5.11rc7" + +CVE_STATUS[CVE-2021-22543] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-22555] = "fixed-version: Fixed from version 5.12rc8" + +CVE_STATUS[CVE-2021-22600] = "fixed-version: Fixed from version 5.16rc6" + +CVE_STATUS[CVE-2021-23133] = "fixed-version: Fixed from version 5.12rc8" + +CVE_STATUS[CVE-2021-23134] = "fixed-version: Fixed from version 5.13rc1" + +CVE_STATUS[CVE-2021-26401] = "fixed-version: Fixed from version 5.17rc8" + +CVE_STATUS[CVE-2021-26708] = "fixed-version: Fixed from version 5.11rc7" + +CVE_STATUS[CVE-2021-26930] = "fixed-version: Fixed from version 5.12rc1" + +CVE_STATUS[CVE-2021-26931] = "fixed-version: Fixed from version 5.12rc1" + +CVE_STATUS[CVE-2021-26932] = "fixed-version: Fixed from version 5.12rc1" + +# CVE-2021-26934 has no known resolution + +CVE_STATUS[CVE-2021-27363] = "fixed-version: Fixed from version 5.12rc2" + +CVE_STATUS[CVE-2021-27364] = "fixed-version: Fixed from version 5.12rc2" + +CVE_STATUS[CVE-2021-27365] = "fixed-version: Fixed from version 5.12rc2" + +CVE_STATUS[CVE-2021-28038] = "fixed-version: Fixed from version 5.12rc2" + +CVE_STATUS[CVE-2021-28039] = "fixed-version: Fixed from version 5.12rc2" + +CVE_STATUS[CVE-2021-28375] = "fixed-version: Fixed from version 5.12rc3" + +CVE_STATUS[CVE-2021-28660] = "fixed-version: Fixed from version 5.12rc3" + +CVE_STATUS[CVE-2021-28688] = "fixed-version: Fixed from version 5.12rc6" + +CVE_STATUS[CVE-2021-28691] = "fixed-version: Fixed from version 5.13rc6" + +CVE_STATUS[CVE-2021-28711] = "fixed-version: Fixed from version 5.16rc7" + +CVE_STATUS[CVE-2021-28712] = "fixed-version: Fixed from version 5.16rc7" + +CVE_STATUS[CVE-2021-28713] = "fixed-version: Fixed from version 5.16rc7" + +CVE_STATUS[CVE-2021-28714] = "fixed-version: Fixed from version 5.16rc7" + +CVE_STATUS[CVE-2021-28715] = "fixed-version: Fixed from version 5.16rc7" + +CVE_STATUS[CVE-2021-28950] = "fixed-version: Fixed from version 5.12rc4" + +CVE_STATUS[CVE-2021-28951] = "fixed-version: Fixed from version 5.12rc2" + +CVE_STATUS[CVE-2021-28952] = "fixed-version: Fixed from version 5.12rc4" + +CVE_STATUS[CVE-2021-28964] = "fixed-version: Fixed from version 5.12rc4" + +CVE_STATUS[CVE-2021-28971] = "fixed-version: Fixed from version 5.12rc4" + +CVE_STATUS[CVE-2021-28972] = "fixed-version: Fixed from version 5.12rc4" + +CVE_STATUS[CVE-2021-29154] = "fixed-version: Fixed from version 5.12rc7" + +CVE_STATUS[CVE-2021-29155] = "fixed-version: Fixed from version 5.12rc8" + +CVE_STATUS[CVE-2021-29264] = "fixed-version: Fixed from version 5.12rc3" + +CVE_STATUS[CVE-2021-29265] = "fixed-version: Fixed from version 5.12rc3" + +CVE_STATUS[CVE-2021-29266] = "fixed-version: Fixed from version 5.12rc4" + +CVE_STATUS[CVE-2021-29646] = "fixed-version: Fixed from version 5.12rc5" + +CVE_STATUS[CVE-2021-29647] = "fixed-version: Fixed from version 5.12rc5" + +CVE_STATUS[CVE-2021-29648] = "fixed-version: Fixed from version 5.12rc5" + +CVE_STATUS[CVE-2021-29649] = "fixed-version: Fixed from version 5.12rc5" + +CVE_STATUS[CVE-2021-29650] = "fixed-version: Fixed from version 5.12rc5" + +CVE_STATUS[CVE-2021-29657] = "fixed-version: Fixed from version 5.12rc6" + +CVE_STATUS[CVE-2021-30002] = "fixed-version: Fixed from version 5.12rc1" + +CVE_STATUS[CVE-2021-30178] = "fixed-version: Fixed from version 5.12rc2" + +CVE_STATUS[CVE-2021-31440] = "fixed-version: Fixed from version 5.13rc1" + +CVE_STATUS[CVE-2021-3178] = "fixed-version: Fixed from version 5.11rc5" + +CVE_STATUS[CVE-2021-31829] = "fixed-version: Fixed from version 5.13rc1" + +CVE_STATUS[CVE-2021-31916] = "fixed-version: Fixed from version 5.12rc5" + +CVE_STATUS[CVE-2021-32078] = "fixed-version: Fixed from version 5.13rc1" + +CVE_STATUS[CVE-2021-32399] = "fixed-version: Fixed from version 5.13rc1" + +CVE_STATUS[CVE-2021-32606] = "fixed-version: Fixed from version 5.13rc4" + +CVE_STATUS[CVE-2021-33033] = "fixed-version: Fixed from version 5.12rc3" + +CVE_STATUS[CVE-2021-33034] = "fixed-version: Fixed from version 5.13rc1" + +CVE_STATUS[CVE-2021-33061] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2021-33098] = "fixed-version: Fixed from version 5.13rc4" + +CVE_STATUS[CVE-2021-33135] = "fixed-version: Fixed from version 5.17rc8" + +CVE_STATUS[CVE-2021-33200] = "fixed-version: Fixed from version 5.13rc4" + +CVE_STATUS[CVE-2021-3347] = "fixed-version: Fixed from version 5.11rc6" + +CVE_STATUS[CVE-2021-3348] = "fixed-version: Fixed from version 5.11rc6" + +CVE_STATUS[CVE-2021-33624] = "fixed-version: Fixed from version 5.13rc7" + +CVE_STATUS[CVE-2021-33630] = "fixed-version: Fixed from version 5.4rc1" + +CVE_STATUS[CVE-2021-33631] = "fixed-version: Fixed from version 6.2rc1" + +CVE_STATUS[CVE-2021-33655] = "fixed-version: Fixed from version 5.19rc6" + +CVE_STATUS[CVE-2021-33656] = "fixed-version: Fixed from version 5.12rc1" + +CVE_STATUS[CVE-2021-33909] = "fixed-version: Fixed from version 5.14rc3" + +CVE_STATUS[CVE-2021-3411] = "fixed-version: Fixed from version 5.10" + +CVE_STATUS[CVE-2021-3428] = "fixed-version: Fixed from version 5.9rc2" + +CVE_STATUS[CVE-2021-3444] = "fixed-version: Fixed from version 5.12rc1" + +CVE_STATUS[CVE-2021-34556] = "fixed-version: Fixed from version 5.14rc4" + +CVE_STATUS[CVE-2021-34693] = "fixed-version: Fixed from version 5.13rc7" + +CVE_STATUS[CVE-2021-3483] = "fixed-version: Fixed from version 5.12rc6" + +CVE_STATUS[CVE-2021-34866] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-3489] = "fixed-version: Fixed from version 5.13rc4" + +CVE_STATUS[CVE-2021-3490] = "fixed-version: Fixed from version 5.13rc4" + +CVE_STATUS[CVE-2021-3491] = "fixed-version: Fixed from version 5.13rc1" + +# CVE-2021-3492 has no known resolution + +CVE_STATUS[CVE-2021-3493] = "fixed-version: Fixed from version 5.11rc1" + +CVE_STATUS[CVE-2021-34981] = "fixed-version: Fixed from version 5.14rc1" + +CVE_STATUS[CVE-2021-3501] = "fixed-version: Fixed from version 5.12rc8" + +CVE_STATUS[CVE-2021-35039] = "fixed-version: Fixed from version 5.13" + +CVE_STATUS[CVE-2021-3506] = "fixed-version: Fixed from version 5.13rc1" + +# CVE-2021-3542 has no known resolution + +CVE_STATUS[CVE-2021-3543] = "fixed-version: Fixed from version 5.13rc1" + +CVE_STATUS[CVE-2021-35477] = "fixed-version: Fixed from version 5.14rc4" + +CVE_STATUS[CVE-2021-3564] = "fixed-version: Fixed from version 5.13rc5" + +CVE_STATUS[CVE-2021-3573] = "fixed-version: Fixed from version 5.13rc5" + +CVE_STATUS[CVE-2021-3587] = "fixed-version: Fixed from version 5.13rc5" + +CVE_STATUS[CVE-2021-3600] = "fixed-version: Fixed from version 5.11" + +CVE_STATUS[CVE-2021-3609] = "fixed-version: Fixed from version 5.14rc1" + +CVE_STATUS[CVE-2021-3612] = "fixed-version: Fixed from version 5.12rc1" + +CVE_STATUS[CVE-2021-3635] = "fixed-version: Fixed from version 5.5rc7" + +CVE_STATUS[CVE-2021-3640] = "fixed-version: Fixed from version 5.16rc1" + +CVE_STATUS[CVE-2021-3653] = "fixed-version: Fixed from version 5.14rc7" + +CVE_STATUS[CVE-2021-3655] = "fixed-version: Fixed from version 5.14rc1" + +CVE_STATUS[CVE-2021-3656] = "fixed-version: Fixed from version 5.14rc7" + +CVE_STATUS[CVE-2021-3659] = "fixed-version: Fixed from version 5.12rc7" + +CVE_STATUS[CVE-2021-3669] = "fixed-version: Fixed from version 5.15rc1" + +CVE_STATUS[CVE-2021-3679] = "fixed-version: Fixed from version 5.14rc3" + +# CVE-2021-3714 has no known resolution + +CVE_STATUS[CVE-2021-3715] = "fixed-version: Fixed from version 5.6" + +CVE_STATUS[CVE-2021-37159] = "fixed-version: Fixed from version 5.14rc3" + +CVE_STATUS[CVE-2021-3732] = "fixed-version: Fixed from version 5.14rc6" + +CVE_STATUS[CVE-2021-3736] = "fixed-version: Fixed from version 5.15rc1" + +CVE_STATUS[CVE-2021-3739] = "fixed-version: Fixed from version 5.15rc1" + +CVE_STATUS[CVE-2021-3743] = "fixed-version: Fixed from version 5.13rc7" + +CVE_STATUS[CVE-2021-3744] = "fixed-version: Fixed from version 5.15rc4" + +CVE_STATUS[CVE-2021-3752] = "fixed-version: Fixed from version 5.16rc1" + +CVE_STATUS[CVE-2021-3753] = "fixed-version: Fixed from version 5.15rc1" + +CVE_STATUS[CVE-2021-37576] = "fixed-version: Fixed from version 5.14rc3" + +CVE_STATUS[CVE-2021-3759] = "fixed-version: Fixed from version 5.15rc1" + +CVE_STATUS[CVE-2021-3760] = "fixed-version: Fixed from version 5.15rc6" + +CVE_STATUS[CVE-2021-3764] = "fixed-version: Fixed from version 5.15rc4" + +CVE_STATUS[CVE-2021-3772] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-38160] = "fixed-version: Fixed from version 5.14rc1" + +CVE_STATUS[CVE-2021-38166] = "fixed-version: Fixed from version 5.14rc6" + +CVE_STATUS[CVE-2021-38198] = "fixed-version: Fixed from version 5.13rc6" + +CVE_STATUS[CVE-2021-38199] = "fixed-version: Fixed from version 5.14rc1" + +CVE_STATUS[CVE-2021-38200] = "fixed-version: Fixed from version 5.13rc7" + +CVE_STATUS[CVE-2021-38201] = "fixed-version: Fixed from version 5.14rc1" + +CVE_STATUS[CVE-2021-38202] = "fixed-version: Fixed from version 5.14rc1" + +CVE_STATUS[CVE-2021-38203] = "fixed-version: Fixed from version 5.14rc2" + +CVE_STATUS[CVE-2021-38204] = "fixed-version: Fixed from version 5.14rc3" + +CVE_STATUS[CVE-2021-38205] = "fixed-version: Fixed from version 5.14rc1" + +CVE_STATUS[CVE-2021-38206] = "fixed-version: Fixed from version 5.13rc7" + +CVE_STATUS[CVE-2021-38207] = "fixed-version: Fixed from version 5.13rc7" + +CVE_STATUS[CVE-2021-38208] = "fixed-version: Fixed from version 5.13rc5" + +CVE_STATUS[CVE-2021-38209] = "fixed-version: Fixed from version 5.13rc1" + +CVE_STATUS[CVE-2021-38300] = "fixed-version: Fixed from version 5.15rc4" + +# CVE-2021-3847 has no known resolution + +# CVE-2021-3864 has no known resolution + +# CVE-2021-3892 has no known resolution + +CVE_STATUS[CVE-2021-3894] = "fixed-version: Fixed from version 5.15rc6" + +CVE_STATUS[CVE-2021-3896] = "fixed-version: Fixed from version 5.15rc6" + +CVE_STATUS[CVE-2021-3923] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-39633] = "fixed-version: Fixed from version 5.14" + +CVE_STATUS[CVE-2021-39634] = "fixed-version: Fixed from version 5.9rc8" + +CVE_STATUS[CVE-2021-39636] = "fixed-version: Fixed from version 4.16rc1" + +CVE_STATUS[CVE-2021-39648] = "fixed-version: Fixed from version 5.11rc3" + +CVE_STATUS[CVE-2021-39656] = "fixed-version: Fixed from version 5.12rc3" + +CVE_STATUS[CVE-2021-39657] = "fixed-version: Fixed from version 5.11rc4" + +CVE_STATUS[CVE-2021-39685] = "fixed-version: Fixed from version 5.16rc5" + +CVE_STATUS[CVE-2021-39686] = "fixed-version: Fixed from version 5.16rc1" + +CVE_STATUS[CVE-2021-39698] = "fixed-version: Fixed from version 5.16rc5" + +CVE_STATUS[CVE-2021-39711] = "fixed-version: Fixed from version 4.18rc6" + +CVE_STATUS[CVE-2021-39713] = "fixed-version: Fixed from version 4.20rc1" + +CVE_STATUS[CVE-2021-39714] = "fixed-version: Fixed from version 4.12rc1" + +# CVE-2021-39800 has no known resolution + +# CVE-2021-39801 has no known resolution + +# CVE-2021-39802 has no known resolution + +CVE_STATUS[CVE-2021-4001] = "fixed-version: Fixed from version 5.16rc2" + +CVE_STATUS[CVE-2021-4002] = "fixed-version: Fixed from version 5.16rc3" + +CVE_STATUS[CVE-2021-4023] = "fixed-version: Fixed from version 5.15rc1" + +CVE_STATUS[CVE-2021-4028] = "fixed-version: Fixed from version 5.15rc4" + +CVE_STATUS[CVE-2021-4032] = "fixed-version: Fixed from version 5.15rc7" + +CVE_STATUS[CVE-2021-4037] = "fixed-version: Fixed from version 5.12rc1" + +CVE_STATUS[CVE-2021-40490] = "fixed-version: Fixed from version 5.15rc1" + +CVE_STATUS[CVE-2021-4083] = "fixed-version: Fixed from version 5.16rc4" + +CVE_STATUS[CVE-2021-4090] = "fixed-version: Fixed from version 5.16rc2" + +CVE_STATUS[CVE-2021-4093] = "fixed-version: Fixed from version 5.15rc7" + +CVE_STATUS[CVE-2021-4095] = "fixed-version: Fixed from version 5.17rc1" + +CVE_STATUS[CVE-2021-41073] = "fixed-version: Fixed from version 5.15rc2" + +CVE_STATUS[CVE-2021-4135] = "fixed-version: Fixed from version 5.16rc6" + +CVE_STATUS[CVE-2021-4148] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-4149] = "fixed-version: Fixed from version 5.15rc6" + +CVE_STATUS[CVE-2021-4150] = "fixed-version: Fixed from version 5.15rc7" + +CVE_STATUS[CVE-2021-4154] = "fixed-version: Fixed from version 5.14rc2" + +CVE_STATUS[CVE-2021-4155] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-4157] = "fixed-version: Fixed from version 5.13rc1" + +CVE_STATUS[CVE-2021-4159] = "fixed-version: Fixed from version 5.7rc1" + +CVE_STATUS[CVE-2021-41864] = "fixed-version: Fixed from version 5.15rc5" + +CVE_STATUS[CVE-2021-4197] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2021-42008] = "fixed-version: Fixed from version 5.14rc7" + +CVE_STATUS[CVE-2021-4202] = "fixed-version: Fixed from version 5.16rc2" + +CVE_STATUS[CVE-2021-4203] = "fixed-version: Fixed from version 5.15rc4" + +CVE_STATUS[CVE-2021-4204] = "fixed-version: Fixed from version 5.17rc1" + +CVE_STATUS[CVE-2021-4218] = "fixed-version: Fixed from version 5.8rc1" + +CVE_STATUS[CVE-2021-42252] = "fixed-version: Fixed from version 5.15rc1" + +CVE_STATUS[CVE-2021-42327] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-42739] = "fixed-version: Fixed from version 5.16rc1" + +CVE_STATUS[CVE-2021-43056] = "fixed-version: Fixed from version 5.15rc6" + +CVE_STATUS[CVE-2021-43057] = "fixed-version: Fixed from version 5.15rc3" + +CVE_STATUS[CVE-2021-43267] = "fixed-version: Fixed from version 5.15" + +CVE_STATUS[CVE-2021-43389] = "fixed-version: Fixed from version 5.15rc6" + +CVE_STATUS[CVE-2021-43975] = "fixed-version: Fixed from version 5.16rc2" + +CVE_STATUS[CVE-2021-43976] = "fixed-version: Fixed from version 5.17rc1" + +CVE_STATUS[CVE-2021-44733] = "fixed-version: Fixed from version 5.16rc7" + +CVE_STATUS[CVE-2021-44879] = "fixed-version: Fixed from version 5.17rc1" + +CVE_STATUS[CVE-2021-45095] = "fixed-version: Fixed from version 5.16rc6" + +CVE_STATUS[CVE-2021-45100] = "fixed-version: Fixed from version 5.16rc7" + +CVE_STATUS[CVE-2021-45402] = "fixed-version: Fixed from version 5.16rc6" + +CVE_STATUS[CVE-2021-45469] = "fixed-version: Fixed from version 5.17rc1" + +CVE_STATUS[CVE-2021-45480] = "fixed-version: Fixed from version 5.16rc6" + +CVE_STATUS[CVE-2021-45485] = "fixed-version: Fixed from version 5.14rc1" + +CVE_STATUS[CVE-2021-45486] = "fixed-version: Fixed from version 5.13rc1" + +CVE_STATUS[CVE-2021-45868] = "fixed-version: Fixed from version 5.16rc1" + +CVE_STATUS[CVE-2021-46283] = "fixed-version: Fixed from version 5.13rc7" + +CVE_STATUS[CVE-2022-0001] = "fixed-version: Fixed from version 5.17rc8" + +CVE_STATUS[CVE-2022-0002] = "fixed-version: Fixed from version 5.17rc8" + +CVE_STATUS[CVE-2022-0168] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2022-0171] = "fixed-version: Fixed from version 5.18rc4" + +CVE_STATUS[CVE-2022-0185] = "fixed-version: Fixed from version 5.17rc1" + +CVE_STATUS[CVE-2022-0264] = "fixed-version: Fixed from version 5.16rc6" + +CVE_STATUS[CVE-2022-0286] = "fixed-version: Fixed from version 5.14rc2" + +CVE_STATUS[CVE-2022-0322] = "fixed-version: Fixed from version 5.15rc6" + +CVE_STATUS[CVE-2022-0330] = "fixed-version: Fixed from version 5.17rc2" + +CVE_STATUS[CVE-2022-0382] = "fixed-version: Fixed from version 5.16" + +# CVE-2022-0400 has no known resolution + +CVE_STATUS[CVE-2022-0433] = "fixed-version: Fixed from version 5.17rc1" + +CVE_STATUS[CVE-2022-0435] = "fixed-version: Fixed from version 5.17rc4" + +CVE_STATUS[CVE-2022-0480] = "fixed-version: Fixed from version 5.15rc1" + +CVE_STATUS[CVE-2022-0487] = "fixed-version: Fixed from version 5.17rc4" + +CVE_STATUS[CVE-2022-0492] = "fixed-version: Fixed from version 5.17rc3" + +CVE_STATUS[CVE-2022-0494] = "fixed-version: Fixed from version 5.17rc5" + +CVE_STATUS[CVE-2022-0500] = "fixed-version: Fixed from version 5.17rc1" + +CVE_STATUS[CVE-2022-0516] = "fixed-version: Fixed from version 5.17rc4" + +CVE_STATUS[CVE-2022-0617] = "fixed-version: Fixed from version 5.17rc2" + +CVE_STATUS[CVE-2022-0644] = "fixed-version: Fixed from version 5.15rc7" + +CVE_STATUS[CVE-2022-0646] = "fixed-version: Fixed from version 5.17rc5" + +CVE_STATUS[CVE-2022-0742] = "fixed-version: Fixed from version 5.17rc7" + +CVE_STATUS[CVE-2022-0812] = "fixed-version: Fixed from version 5.8rc6" + +CVE_STATUS[CVE-2022-0847] = "fixed-version: Fixed from version 5.17rc6" + +CVE_STATUS[CVE-2022-0850] = "fixed-version: Fixed from version 5.14rc1" + +CVE_STATUS[CVE-2022-0854] = "fixed-version: Fixed from version 5.17rc8" + +CVE_STATUS[CVE-2022-0995] = "fixed-version: Fixed from version 5.17rc8" + +CVE_STATUS[CVE-2022-0998] = "fixed-version: Fixed from version 5.17rc1" + +CVE_STATUS[CVE-2022-1011] = "fixed-version: Fixed from version 5.17rc8" + +CVE_STATUS[CVE-2022-1012] = "fixed-version: Fixed from version 5.18rc6" + +CVE_STATUS[CVE-2022-1015] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2022-1016] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2022-1043] = "fixed-version: Fixed from version 5.14rc7" + +CVE_STATUS[CVE-2022-1048] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2022-1055] = "fixed-version: Fixed from version 5.17rc3" + +# CVE-2022-1116 has no known resolution + +CVE_STATUS[CVE-2022-1158] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2022-1184] = "fixed-version: Fixed from version 5.19rc1" + +CVE_STATUS[CVE-2022-1195] = "fixed-version: Fixed from version 5.16rc7" + +CVE_STATUS[CVE-2022-1198] = "fixed-version: Fixed from version 5.17rc6" + +CVE_STATUS[CVE-2022-1199] = "fixed-version: Fixed from version 5.17rc8" + +CVE_STATUS[CVE-2022-1204] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2022-1205] = "fixed-version: Fixed from version 5.18rc1" + +# CVE-2022-1247 has no known resolution + +CVE_STATUS[CVE-2022-1263] = "fixed-version: Fixed from version 5.18rc3" + +CVE_STATUS[CVE-2022-1280] = "fixed-version: Fixed from version 5.15rc1" + +CVE_STATUS[CVE-2022-1353] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-1419] = "fixed-version: Fixed from version 5.6rc2" + +CVE_STATUS[CVE-2022-1462] = "fixed-version: Fixed from version 5.19rc7" + +CVE_STATUS[CVE-2022-1508] = "fixed-version: Fixed from version 5.15rc1" + +CVE_STATUS[CVE-2022-1516] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2022-1651] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2022-1652] = "fixed-version: Fixed from version 5.18rc6" + +CVE_STATUS[CVE-2022-1671] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2022-1678] = "fixed-version: Fixed from version 4.20rc1" + +CVE_STATUS[CVE-2022-1679] = "fixed-version: Fixed from version 6.0rc1" + +CVE_STATUS[CVE-2022-1729] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-1734] = "fixed-version: Fixed from version 5.18rc6" + +CVE_STATUS[CVE-2022-1786] = "fixed-version: Fixed from version 5.12rc1" + +CVE_STATUS[CVE-2022-1789] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2022-1836] = "fixed-version: Fixed from version 5.18rc5" + +CVE_STATUS[CVE-2022-1852] = "fixed-version: Fixed from version 5.19rc1" + +CVE_STATUS[CVE-2022-1882] = "fixed-version: Fixed from version 5.19rc8" + +CVE_STATUS[CVE-2022-1943] = "fixed-version: Fixed from version 5.18rc7" + +CVE_STATUS[CVE-2022-1966] = "fixed-version: Fixed from version 5.19rc1" + +CVE_STATUS[CVE-2022-1972] = "fixed-version: Fixed from version 5.19rc1" + +CVE_STATUS[CVE-2022-1973] = "fixed-version: Fixed from version 5.19rc1" + +CVE_STATUS[CVE-2022-1974] = "fixed-version: Fixed from version 5.18rc6" + +CVE_STATUS[CVE-2022-1975] = "fixed-version: Fixed from version 5.18rc6" + +CVE_STATUS[CVE-2022-1976] = "fixed-version: Fixed from version 5.19rc1" + +CVE_STATUS[CVE-2022-1998] = "fixed-version: Fixed from version 5.17rc3" + +CVE_STATUS[CVE-2022-20008] = "fixed-version: Fixed from version 5.17rc5" + +CVE_STATUS[CVE-2022-20132] = "fixed-version: Fixed from version 5.16rc5" + +CVE_STATUS[CVE-2022-20141] = "fixed-version: Fixed from version 5.15rc1" + +CVE_STATUS[CVE-2022-20148] = "fixed-version: Fixed from version 5.16rc1" + +CVE_STATUS[CVE-2022-20153] = "fixed-version: Fixed from version 5.13rc1" + +CVE_STATUS[CVE-2022-20154] = "fixed-version: Fixed from version 5.16rc8" + +CVE_STATUS[CVE-2022-20158] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-20166] = "fixed-version: Fixed from version 5.10rc1" + +CVE_STATUS[CVE-2022-20368] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-20369] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2022-20409] = "fixed-version: Fixed from version 5.12rc1" + +CVE_STATUS[CVE-2022-20421] = "fixed-version: Fixed from version 6.0rc4" + +CVE_STATUS[CVE-2022-20422] = "fixed-version: Fixed from version 6.0rc1" + +CVE_STATUS[CVE-2022-20423] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-20424] = "fixed-version: Fixed from version 5.12rc1" + +CVE_STATUS[CVE-2022-20565] = "fixed-version: Fixed from version 5.9rc4" + +CVE_STATUS[CVE-2022-20566] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-20567] = "fixed-version: Fixed from version 4.16rc5" + +CVE_STATUS[CVE-2022-20568] = "fixed-version: Fixed from version 5.12rc1" + +CVE_STATUS[CVE-2022-20572] = "fixed-version: Fixed from version 5.19rc1" + +CVE_STATUS[CVE-2022-2078] = "fixed-version: Fixed from version 5.19rc1" + +CVE_STATUS[CVE-2022-21123] = "fixed-version: Fixed from version 5.19rc3" + +CVE_STATUS[CVE-2022-21125] = "fixed-version: Fixed from version 5.19rc3" + +CVE_STATUS[CVE-2022-21166] = "fixed-version: Fixed from version 5.19rc3" + +CVE_STATUS[CVE-2022-21385] = "fixed-version: Fixed from version 4.20" + +CVE_STATUS[CVE-2022-21499] = "fixed-version: Fixed from version 5.19rc1" + +CVE_STATUS[CVE-2022-21505] = "fixed-version: Fixed from version 5.19rc8" + +CVE_STATUS[CVE-2022-2153] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2022-2196] = "fixed-version: Fixed from version 6.2rc1" + +# CVE-2022-2209 has no known resolution + +CVE_STATUS[CVE-2022-22942] = "fixed-version: Fixed from version 5.17rc2" + +CVE_STATUS[CVE-2022-23036] = "fixed-version: Fixed from version 5.17rc8" + +CVE_STATUS[CVE-2022-23037] = "fixed-version: Fixed from version 5.17rc8" + +CVE_STATUS[CVE-2022-23038] = "fixed-version: Fixed from version 5.17rc8" + +CVE_STATUS[CVE-2022-23039] = "fixed-version: Fixed from version 5.17rc8" + +CVE_STATUS[CVE-2022-23040] = "fixed-version: Fixed from version 5.17rc8" + +CVE_STATUS[CVE-2022-23041] = "fixed-version: Fixed from version 5.17rc8" + +CVE_STATUS[CVE-2022-23042] = "fixed-version: Fixed from version 5.17rc8" + +CVE_STATUS[CVE-2022-2308] = "fixed-version: Fixed from version 6.0" + +CVE_STATUS[CVE-2022-2318] = "fixed-version: Fixed from version 5.19rc5" + +CVE_STATUS[CVE-2022-23222] = "fixed-version: Fixed from version 5.17rc1" + +CVE_STATUS[CVE-2022-2327] = "fixed-version: Fixed from version 5.12rc1" + +CVE_STATUS[CVE-2022-2380] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2022-23816] = "fixed-version: Fixed from version 5.19rc7" + +# CVE-2022-23825 has no known resolution + +CVE_STATUS[CVE-2022-23960] = "fixed-version: Fixed from version 5.17rc8" + +CVE_STATUS[CVE-2022-24122] = "fixed-version: Fixed from version 5.17rc2" + +CVE_STATUS[CVE-2022-24448] = "fixed-version: Fixed from version 5.17rc2" + +CVE_STATUS[CVE-2022-24958] = "fixed-version: Fixed from version 5.17rc1" + +CVE_STATUS[CVE-2022-24959] = "fixed-version: Fixed from version 5.17rc2" + +CVE_STATUS[CVE-2022-2503] = "fixed-version: Fixed from version 5.19rc1" + +CVE_STATUS[CVE-2022-25258] = "fixed-version: Fixed from version 5.17rc4" + +# CVE-2022-25265 has no known resolution + +CVE_STATUS[CVE-2022-25375] = "fixed-version: Fixed from version 5.17rc4" + +CVE_STATUS[CVE-2022-25636] = "fixed-version: Fixed from version 5.17rc6" + +CVE_STATUS[CVE-2022-2585] = "fixed-version: Fixed from version 6.0rc1" + +CVE_STATUS[CVE-2022-2586] = "fixed-version: Fixed from version 6.0rc1" + +CVE_STATUS[CVE-2022-2588] = "fixed-version: Fixed from version 6.0rc1" + +CVE_STATUS[CVE-2022-2590] = "fixed-version: Fixed from version 6.0rc3" + +CVE_STATUS[CVE-2022-2602] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-26365] = "fixed-version: Fixed from version 5.19rc6" + +CVE_STATUS[CVE-2022-26373] = "fixed-version: Fixed from version 6.0rc1" + +CVE_STATUS[CVE-2022-2639] = "fixed-version: Fixed from version 5.18rc4" + +CVE_STATUS[CVE-2022-26490] = "fixed-version: Fixed from version 5.17rc1" + +CVE_STATUS[CVE-2022-2663] = "fixed-version: Fixed from version 6.0rc5" + +# CVE-2022-26878 has no known resolution + +CVE_STATUS[CVE-2022-26966] = "fixed-version: Fixed from version 5.17rc6" + +CVE_STATUS[CVE-2022-27223] = "fixed-version: Fixed from version 5.17rc6" + +CVE_STATUS[CVE-2022-27666] = "fixed-version: Fixed from version 5.17rc8" + +CVE_STATUS[CVE-2022-27672] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2022-2785] = "fixed-version: Fixed from version 6.0rc1" + +CVE_STATUS[CVE-2022-27950] = "fixed-version: Fixed from version 5.17rc5" + +CVE_STATUS[CVE-2022-28356] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2022-28388] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2022-28389] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2022-28390] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2022-2873] = "fixed-version: Fixed from version 5.19rc1" + +CVE_STATUS[CVE-2022-28796] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2022-28893] = "fixed-version: Fixed from version 5.18rc2" + +CVE_STATUS[CVE-2022-2905] = "fixed-version: Fixed from version 6.0rc4" + +CVE_STATUS[CVE-2022-29156] = "fixed-version: Fixed from version 5.17rc6" + +CVE_STATUS[CVE-2022-2938] = "fixed-version: Fixed from version 5.17rc2" + +CVE_STATUS[CVE-2022-29581] = "fixed-version: Fixed from version 5.18rc4" + +CVE_STATUS[CVE-2022-29582] = "fixed-version: Fixed from version 5.18rc2" + +CVE_STATUS[CVE-2022-2959] = "fixed-version: Fixed from version 5.19rc1" + +# CVE-2022-2961 has no known resolution + +CVE_STATUS[CVE-2022-2964] = "fixed-version: Fixed from version 5.17rc4" + +CVE_STATUS[CVE-2022-2977] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2022-2978] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-29900] = "fixed-version: Fixed from version 5.19rc7" + +CVE_STATUS[CVE-2022-29901] = "fixed-version: Fixed from version 5.19rc7" + +CVE_STATUS[CVE-2022-2991] = "fixed-version: Fixed from version 5.15rc1" + +CVE_STATUS[CVE-2022-29968] = "fixed-version: Fixed from version 5.18rc5" + +CVE_STATUS[CVE-2022-3028] = "fixed-version: Fixed from version 6.0rc3" + +CVE_STATUS[CVE-2022-30594] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2022-3061] = "fixed-version: Fixed from version 5.18rc5" + +CVE_STATUS[CVE-2022-3077] = "fixed-version: Fixed from version 5.19rc1" + +CVE_STATUS[CVE-2022-3078] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2022-3103] = "fixed-version: Fixed from version 6.0rc3" + +CVE_STATUS[CVE-2022-3104] = "fixed-version: Fixed from version 5.19rc1" + +CVE_STATUS[CVE-2022-3105] = "fixed-version: Fixed from version 5.16" + +CVE_STATUS[CVE-2022-3106] = "fixed-version: Fixed from version 5.16rc6" + +CVE_STATUS[CVE-2022-3107] = "fixed-version: Fixed from version 5.17" + +CVE_STATUS[CVE-2022-3108] = "fixed-version: Fixed from version 5.17rc1" + +CVE_STATUS[CVE-2022-3110] = "fixed-version: Fixed from version 5.19rc1" + +CVE_STATUS[CVE-2022-3111] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2022-3112] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2022-3113] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2022-3114] = "fixed-version: Fixed from version 5.19rc1" + +CVE_STATUS[CVE-2022-3115] = "fixed-version: Fixed from version 5.19rc1" + +CVE_STATUS[CVE-2022-3169] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-3170] = "fixed-version: Fixed from version 6.0rc4" + +CVE_STATUS[CVE-2022-3176] = "fixed-version: Fixed from version 5.17rc1" + +CVE_STATUS[CVE-2022-3202] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2022-32250] = "fixed-version: Fixed from version 5.19rc1" + +CVE_STATUS[CVE-2022-32296] = "fixed-version: Fixed from version 5.18rc6" + +# CVE-2022-3238 has no known resolution + +CVE_STATUS[CVE-2022-3239] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2022-32981] = "fixed-version: Fixed from version 5.19rc2" + +CVE_STATUS[CVE-2022-3303] = "fixed-version: Fixed from version 6.0rc5" + +CVE_STATUS[CVE-2022-3344] = "fixed-version: Fixed from version 6.1rc7" + +CVE_STATUS[CVE-2022-33740] = "fixed-version: Fixed from version 5.19rc6" + +CVE_STATUS[CVE-2022-33741] = "fixed-version: Fixed from version 5.19rc6" + +CVE_STATUS[CVE-2022-33742] = "fixed-version: Fixed from version 5.19rc6" + +CVE_STATUS[CVE-2022-33743] = "fixed-version: Fixed from version 5.19rc6" + +CVE_STATUS[CVE-2022-33744] = "fixed-version: Fixed from version 5.19rc6" + +CVE_STATUS[CVE-2022-33981] = "fixed-version: Fixed from version 5.18rc5" + +CVE_STATUS[CVE-2022-3424] = "fixed-version: Fixed from version 6.2rc1" + +CVE_STATUS[CVE-2022-3435] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-34494] = "fixed-version: Fixed from version 5.19rc1" + +CVE_STATUS[CVE-2022-34495] = "fixed-version: Fixed from version 5.19rc1" + +CVE_STATUS[CVE-2022-34918] = "fixed-version: Fixed from version 5.19rc6" + +CVE_STATUS[CVE-2022-3521] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-3522] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-3523] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-3524] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-3526] = "fixed-version: Fixed from version 5.18rc3" + +CVE_STATUS[CVE-2022-3531] = "fixed-version: Fixed from version 6.2rc1" + +CVE_STATUS[CVE-2022-3532] = "fixed-version: Fixed from version 6.2rc1" + +# CVE-2022-3533 has no known resolution + +CVE_STATUS[CVE-2022-3534] = "fixed-version: Fixed from version 6.2rc1" + +CVE_STATUS[CVE-2022-3535] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-3541] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-3542] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-3543] = "fixed-version: Fixed from version 6.1rc1" + +# CVE-2022-3544 has no known resolution + +CVE_STATUS[CVE-2022-3545] = "fixed-version: Fixed from version 6.0rc1" + +CVE_STATUS[CVE-2022-3564] = "fixed-version: Fixed from version 6.1rc4" + +CVE_STATUS[CVE-2022-3565] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-3566] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-3567] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-3577] = "fixed-version: Fixed from version 5.19rc1" + +CVE_STATUS[CVE-2022-3586] = "fixed-version: Fixed from version 6.0rc5" + +CVE_STATUS[CVE-2022-3594] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-3595] = "fixed-version: Fixed from version 6.1rc1" + +# CVE-2022-3606 has no known resolution + +CVE_STATUS[CVE-2022-36123] = "fixed-version: Fixed from version 5.19rc6" + +CVE_STATUS[CVE-2022-3619] = "fixed-version: Fixed from version 6.1rc4" + +CVE_STATUS[CVE-2022-3621] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-3623] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-3624] = "fixed-version: Fixed from version 6.0rc1" + +CVE_STATUS[CVE-2022-3625] = "fixed-version: Fixed from version 6.0rc1" + +CVE_STATUS[CVE-2022-3628] = "fixed-version: Fixed from version 6.1rc5" + +CVE_STATUS[CVE-2022-36280] = "fixed-version: Fixed from version 6.2rc1" + +CVE_STATUS[CVE-2022-3629] = "fixed-version: Fixed from version 6.0rc1" + +CVE_STATUS[CVE-2022-3630] = "fixed-version: Fixed from version 6.0rc1" + +CVE_STATUS[CVE-2022-3633] = "fixed-version: Fixed from version 6.0rc1" + +CVE_STATUS[CVE-2022-3635] = "fixed-version: Fixed from version 6.0rc1" + +CVE_STATUS[CVE-2022-3636] = "fixed-version: Fixed from version 5.19rc1" + +CVE_STATUS[CVE-2022-3640] = "fixed-version: Fixed from version 6.1rc4" + +CVE_STATUS[CVE-2022-36402] = "fixed-version: Fixed from version 6.5" + +# CVE-2022-3642 has no known resolution + +CVE_STATUS[CVE-2022-3643] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-3646] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-3649] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-36879] = "fixed-version: Fixed from version 5.19rc8" + +CVE_STATUS[CVE-2022-36946] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2022-3707] = "fixed-version: Fixed from version 6.2rc3" + +# CVE-2022-38096 has no known resolution + +CVE_STATUS[CVE-2022-38457] = "fixed-version: Fixed from version 6.2rc4" + +CVE_STATUS[CVE-2022-3903] = "fixed-version: Fixed from version 6.1rc2" + +CVE_STATUS[CVE-2022-3910] = "fixed-version: Fixed from version 6.0rc6" + +CVE_STATUS[CVE-2022-39188] = "fixed-version: Fixed from version 5.19rc8" + +CVE_STATUS[CVE-2022-39189] = "fixed-version: Fixed from version 5.19rc2" + +CVE_STATUS[CVE-2022-39190] = "fixed-version: Fixed from version 6.0rc3" + +CVE_STATUS[CVE-2022-3977] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-39842] = "fixed-version: Fixed from version 5.19rc4" + +CVE_STATUS[CVE-2022-40133] = "fixed-version: Fixed from version 6.2rc4" + +CVE_STATUS[CVE-2022-40307] = "fixed-version: Fixed from version 6.0rc5" + +CVE_STATUS[CVE-2022-40476] = "fixed-version: Fixed from version 5.19rc4" + +CVE_STATUS[CVE-2022-40768] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-4095] = "fixed-version: Fixed from version 6.0rc4" + +CVE_STATUS[CVE-2022-40982] = "fixed-version: Fixed from version 6.5rc6" + +CVE_STATUS[CVE-2022-41218] = "fixed-version: Fixed from version 6.2rc1" + +CVE_STATUS[CVE-2022-41222] = "fixed-version: Fixed from version 5.14rc1" + +CVE_STATUS[CVE-2022-4127] = "fixed-version: Fixed from version 5.19rc6" + +CVE_STATUS[CVE-2022-4128] = "fixed-version: Fixed from version 5.19rc7" + +CVE_STATUS[CVE-2022-4129] = "fixed-version: Fixed from version 6.1rc6" + +CVE_STATUS[CVE-2022-4139] = "fixed-version: Fixed from version 6.1rc8" + +CVE_STATUS[CVE-2022-41674] = "fixed-version: Fixed from version 6.1rc1" + +# CVE-2022-41848 has no known resolution + +CVE_STATUS[CVE-2022-41849] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-41850] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-41858] = "fixed-version: Fixed from version 5.18rc2" + +CVE_STATUS[CVE-2022-42328] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-42329] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-42432] = "fixed-version: Fixed from version 6.0rc7" + +CVE_STATUS[CVE-2022-4269] = "fixed-version: Fixed from version 6.3rc1" + +CVE_STATUS[CVE-2022-42703] = "fixed-version: Fixed from version 6.0rc4" + +CVE_STATUS[CVE-2022-42719] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-42720] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-42721] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-42722] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-42895] = "fixed-version: Fixed from version 6.1rc4" + +CVE_STATUS[CVE-2022-42896] = "fixed-version: Fixed from version 6.1rc4" + +CVE_STATUS[CVE-2022-43750] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-4378] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-4379] = "fixed-version: Fixed from version 6.2rc1" + +CVE_STATUS[CVE-2022-4382] = "fixed-version: Fixed from version 6.2rc5" + +CVE_STATUS[CVE-2022-43945] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2022-44032] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2022-44033] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2022-44034] = "fixed-version: Fixed from version 6.4rc1" + +# CVE-2022-4543 has no known resolution + +CVE_STATUS[CVE-2022-45869] = "fixed-version: Fixed from version 6.1rc7" + +# CVE-2022-45884 has no known resolution + +# CVE-2022-45885 has no known resolution + +CVE_STATUS[CVE-2022-45886] = "fixed-version: Fixed from version 6.4rc3" + +CVE_STATUS[CVE-2022-45887] = "fixed-version: Fixed from version 6.4rc3" + +CVE_STATUS[CVE-2022-45888] = "fixed-version: Fixed from version 6.2rc1" + +CVE_STATUS[CVE-2022-45919] = "fixed-version: Fixed from version 6.4rc3" + +CVE_STATUS[CVE-2022-45934] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2022-4662] = "fixed-version: Fixed from version 6.0rc4" + +CVE_STATUS[CVE-2022-4696] = "fixed-version: Fixed from version 5.12rc1" + +CVE_STATUS[CVE-2022-4744] = "fixed-version: Fixed from version 5.16rc7" + +CVE_STATUS[CVE-2022-47518] = "fixed-version: Fixed from version 6.1rc8" + +CVE_STATUS[CVE-2022-47519] = "fixed-version: Fixed from version 6.1rc8" + +CVE_STATUS[CVE-2022-47520] = "fixed-version: Fixed from version 6.1rc8" + +CVE_STATUS[CVE-2022-47521] = "fixed-version: Fixed from version 6.1rc8" + +CVE_STATUS[CVE-2022-47929] = "fixed-version: Fixed from version 6.2rc4" + +CVE_STATUS[CVE-2022-47938] = "fixed-version: Fixed from version 6.0rc1" + +CVE_STATUS[CVE-2022-47939] = "fixed-version: Fixed from version 6.0rc1" + +CVE_STATUS[CVE-2022-47940] = "fixed-version: Fixed from version 5.19rc1" + +CVE_STATUS[CVE-2022-47941] = "fixed-version: Fixed from version 6.0rc1" + +CVE_STATUS[CVE-2022-47942] = "fixed-version: Fixed from version 6.0rc1" + +CVE_STATUS[CVE-2022-47943] = "fixed-version: Fixed from version 6.0rc1" + +CVE_STATUS[CVE-2022-47946] = "fixed-version: Fixed from version 5.12rc2" + +CVE_STATUS[CVE-2022-4842] = "fixed-version: Fixed from version 6.2rc1" + +CVE_STATUS[CVE-2022-48423] = "fixed-version: Fixed from version 6.2rc1" + +CVE_STATUS[CVE-2022-48424] = "fixed-version: Fixed from version 6.2rc1" + +CVE_STATUS[CVE-2022-48425] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2022-48502] = "fixed-version: Fixed from version 6.2rc1" + +CVE_STATUS[CVE-2022-48619] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2023-0030] = "fixed-version: Fixed from version 5.0rc1" + +CVE_STATUS[CVE-2023-0045] = "fixed-version: Fixed from version 6.2rc3" + +CVE_STATUS[CVE-2023-0047] = "fixed-version: Fixed from version 5.16rc1" + +CVE_STATUS[CVE-2023-0122] = "fixed-version: Fixed from version 6.0rc4" + +CVE_STATUS[CVE-2023-0160] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2023-0179] = "fixed-version: Fixed from version 6.2rc5" + +CVE_STATUS[CVE-2023-0210] = "fixed-version: Fixed from version 6.2rc4" + +CVE_STATUS[CVE-2023-0240] = "fixed-version: Fixed from version 5.10rc1" + +CVE_STATUS[CVE-2023-0266] = "fixed-version: Fixed from version 6.2rc4" + +CVE_STATUS[CVE-2023-0386] = "fixed-version: Fixed from version 6.2rc6" + +CVE_STATUS[CVE-2023-0394] = "fixed-version: Fixed from version 6.2rc4" + +CVE_STATUS[CVE-2023-0458] = "fixed-version: Fixed from version 6.2rc5" + +CVE_STATUS[CVE-2023-0459] = "fixed-version: Fixed from version 6.3rc1" + +CVE_STATUS[CVE-2023-0461] = "fixed-version: Fixed from version 6.2rc3" + +CVE_STATUS[CVE-2023-0468] = "fixed-version: Fixed from version 6.1rc7" + +CVE_STATUS[CVE-2023-0469] = "fixed-version: Fixed from version 6.1rc7" + +CVE_STATUS[CVE-2023-0590] = "fixed-version: Fixed from version 6.1rc2" + +CVE_STATUS[CVE-2023-0597] = "fixed-version: Fixed from version 6.2rc1" + +CVE_STATUS[CVE-2023-0615] = "fixed-version: Fixed from version 6.1rc3" + +CVE_STATUS[CVE-2023-1032] = "fixed-version: Fixed from version 6.3rc2" + +CVE_STATUS[CVE-2023-1073] = "fixed-version: Fixed from version 6.2rc5" + +CVE_STATUS[CVE-2023-1074] = "fixed-version: Fixed from version 6.2rc6" + +CVE_STATUS[CVE-2023-1075] = "fixed-version: Fixed from version 6.2rc7" + +CVE_STATUS[CVE-2023-1076] = "fixed-version: Fixed from version 6.3rc1" + +CVE_STATUS[CVE-2023-1077] = "fixed-version: Fixed from version 6.3rc1" + +CVE_STATUS[CVE-2023-1078] = "fixed-version: Fixed from version 6.2rc8" + +CVE_STATUS[CVE-2023-1079] = "fixed-version: Fixed from version 6.3rc1" + +CVE_STATUS[CVE-2023-1095] = "fixed-version: Fixed from version 6.0rc1" + +CVE_STATUS[CVE-2023-1118] = "fixed-version: Fixed from version 6.3rc1" + +CVE_STATUS[CVE-2023-1192] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2023-1193] = "fixed-version: Fixed from version 6.3rc6" + +CVE_STATUS[CVE-2023-1194] = "fixed-version: Fixed from version 6.4rc6" + +CVE_STATUS[CVE-2023-1195] = "fixed-version: Fixed from version 6.1rc3" + +CVE_STATUS[CVE-2023-1206] = "fixed-version: Fixed from version 6.5rc4" + +CVE_STATUS[CVE-2023-1249] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2023-1252] = "fixed-version: Fixed from version 5.16rc1" + +CVE_STATUS[CVE-2023-1281] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-1295] = "fixed-version: Fixed from version 5.12rc1" + +CVE_STATUS[CVE-2023-1380] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2023-1382] = "fixed-version: Fixed from version 6.1rc7" + +CVE_STATUS[CVE-2023-1390] = "fixed-version: Fixed from version 5.11rc4" + +# CVE-2023-1476 has no known resolution + +CVE_STATUS[CVE-2023-1513] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-1582] = "fixed-version: Fixed from version 5.17rc4" + +CVE_STATUS[CVE-2023-1583] = "fixed-version: Fixed from version 6.3rc4" + +CVE_STATUS[CVE-2023-1611] = "fixed-version: Fixed from version 6.3rc5" + +CVE_STATUS[CVE-2023-1637] = "fixed-version: Fixed from version 5.18rc2" + +CVE_STATUS[CVE-2023-1652] = "fixed-version: Fixed from version 6.2rc5" + +CVE_STATUS[CVE-2023-1670] = "fixed-version: Fixed from version 6.3rc4" + +CVE_STATUS[CVE-2023-1829] = "fixed-version: Fixed from version 6.3rc1" + +CVE_STATUS[CVE-2023-1838] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2023-1855] = "fixed-version: Fixed from version 6.3rc3" + +CVE_STATUS[CVE-2023-1859] = "fixed-version: Fixed from version 6.3rc7" + +CVE_STATUS[CVE-2023-1872] = "fixed-version: Fixed from version 5.18rc2" + +CVE_STATUS[CVE-2023-1989] = "fixed-version: Fixed from version 6.3rc4" + +CVE_STATUS[CVE-2023-1990] = "fixed-version: Fixed from version 6.3rc3" + +CVE_STATUS[CVE-2023-1998] = "fixed-version: Fixed from version 6.3rc1" + +CVE_STATUS[CVE-2023-2002] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2023-2006] = "fixed-version: Fixed from version 6.1rc7" + +CVE_STATUS[CVE-2023-2007] = "fixed-version: Fixed from version 6.0rc1" + +CVE_STATUS[CVE-2023-2008] = "fixed-version: Fixed from version 5.19rc4" + +CVE_STATUS[CVE-2023-2019] = "fixed-version: Fixed from version 6.0rc1" + +CVE_STATUS[CVE-2023-20569] = "fixed-version: Fixed from version 6.5rc6" + +CVE_STATUS[CVE-2023-20588] = "fixed-version: Fixed from version 6.5rc6" + +CVE_STATUS[CVE-2023-20593] = "fixed-version: Fixed from version 6.5rc4" + +CVE_STATUS[CVE-2023-20928] = "fixed-version: Fixed from version 6.0rc1" + +# CVE-2023-20937 has no known resolution + +CVE_STATUS[CVE-2023-20938] = "fixed-version: Fixed from version 5.18rc5" + +# CVE-2023-20941 has no known resolution + +CVE_STATUS[CVE-2023-21102] = "fixed-version: Fixed from version 6.2rc4" + +CVE_STATUS[CVE-2023-21106] = "fixed-version: Fixed from version 6.2rc5" + +CVE_STATUS[CVE-2023-2124] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2023-21255] = "fixed-version: Fixed from version 6.4rc4" + +CVE_STATUS[CVE-2023-21264] = "fixed-version: Fixed from version 6.4rc5" + +# CVE-2023-21400 has no known resolution + +CVE_STATUS[CVE-2023-2156] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-2162] = "fixed-version: Fixed from version 6.2rc6" + +CVE_STATUS[CVE-2023-2163] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-2166] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2023-2176] = "fixed-version: Fixed from version 6.3rc1" + +CVE_STATUS[CVE-2023-2177] = "fixed-version: Fixed from version 5.19" + +CVE_STATUS[CVE-2023-2194] = "fixed-version: Fixed from version 6.3rc4" + +CVE_STATUS[CVE-2023-2235] = "fixed-version: Fixed from version 6.3rc3" + +CVE_STATUS[CVE-2023-2236] = "fixed-version: Fixed from version 6.1rc7" + +CVE_STATUS[CVE-2023-2248] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-2269] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2023-22995] = "fixed-version: Fixed from version 5.17rc1" + +CVE_STATUS[CVE-2023-22996] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2023-22997] = "fixed-version: Fixed from version 6.2rc1" + +CVE_STATUS[CVE-2023-22998] = "fixed-version: Fixed from version 6.0rc1" + +CVE_STATUS[CVE-2023-22999] = "fixed-version: Fixed from version 5.17rc1" + +CVE_STATUS[CVE-2023-23000] = "fixed-version: Fixed from version 5.17rc1" + +CVE_STATUS[CVE-2023-23001] = "fixed-version: Fixed from version 5.17rc1" + +CVE_STATUS[CVE-2023-23002] = "fixed-version: Fixed from version 5.17rc1" + +CVE_STATUS[CVE-2023-23003] = "fixed-version: Fixed from version 5.16rc6" + +CVE_STATUS[CVE-2023-23004] = "fixed-version: Fixed from version 5.19rc1" + +CVE_STATUS[CVE-2023-23005] = "fixed-version: Fixed from version 6.2rc1" + +CVE_STATUS[CVE-2023-23006] = "fixed-version: Fixed from version 5.16rc8" + +# CVE-2023-23039 has no known resolution + +CVE_STATUS[CVE-2023-23454] = "fixed-version: Fixed from version 6.2rc3" + +CVE_STATUS[CVE-2023-23455] = "fixed-version: Fixed from version 6.2rc3" + +CVE_STATUS[CVE-2023-23559] = "fixed-version: Fixed from version 6.2rc5" + +CVE_STATUS[CVE-2023-23586] = "fixed-version: Fixed from version 5.12rc1" + +CVE_STATUS[CVE-2023-2430] = "fixed-version: Fixed from version 6.2rc5" + +CVE_STATUS[CVE-2023-2483] = "fixed-version: Fixed from version 6.3rc4" + +CVE_STATUS[CVE-2023-25012] = "fixed-version: Fixed from version 6.3rc1" + +CVE_STATUS[CVE-2023-2513] = "fixed-version: Fixed from version 6.0rc1" + +CVE_STATUS[CVE-2023-25775] = "fixed-version: Fixed from version 6.6rc1" + +CVE_STATUS[CVE-2023-2598] = "fixed-version: Fixed from version 6.4rc1" + +# CVE-2023-26242 has no known resolution + +# CVE-2023-2640 has no known resolution + +CVE_STATUS[CVE-2023-26544] = "fixed-version: Fixed from version 6.2rc1" + +CVE_STATUS[CVE-2023-26545] = "fixed-version: Fixed from version 6.2" + +CVE_STATUS[CVE-2023-26605] = "fixed-version: Fixed from version 6.1rc7" + +CVE_STATUS[CVE-2023-26606] = "fixed-version: Fixed from version 6.2rc1" + +CVE_STATUS[CVE-2023-26607] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2023-28327] = "fixed-version: Fixed from version 6.1" + +CVE_STATUS[CVE-2023-28328] = "fixed-version: Fixed from version 6.2rc1" + +CVE_STATUS[CVE-2023-28410] = "fixed-version: Fixed from version 5.19rc1" + +CVE_STATUS[CVE-2023-28464] = "fixed-version: Fixed from version 6.3rc7" + +CVE_STATUS[CVE-2023-28466] = "fixed-version: Fixed from version 6.3rc2" + +CVE_STATUS[CVE-2023-2860] = "fixed-version: Fixed from version 6.0rc5" + +CVE_STATUS[CVE-2023-28772] = "fixed-version: Fixed from version 5.14rc1" + +CVE_STATUS[CVE-2023-28866] = "fixed-version: Fixed from version 6.3rc4" + +CVE_STATUS[CVE-2023-2898] = "fixed-version: Fixed from version 6.5rc1" + +CVE_STATUS[CVE-2023-2985] = "fixed-version: Fixed from version 6.3rc1" + +CVE_STATUS[CVE-2023-3006] = "fixed-version: Fixed from version 6.1rc1" + +# Skipping CVE-2023-3022, no affected_versions + +CVE_STATUS[CVE-2023-30456] = "fixed-version: Fixed from version 6.3rc3" + +CVE_STATUS[CVE-2023-30772] = "fixed-version: Fixed from version 6.3rc4" + +CVE_STATUS[CVE-2023-3090] = "fixed-version: Fixed from version 6.4rc2" + +CVE_STATUS[CVE-2023-3106] = "fixed-version: Fixed from version 4.8rc7" + +# Skipping CVE-2023-3108, no affected_versions + +# CVE-2023-31081 has no known resolution + +# CVE-2023-31082 has no known resolution + +CVE_STATUS[CVE-2023-31083] = "fixed-version: Fixed from version 6.6rc1" + +CVE_STATUS[CVE-2023-31084] = "fixed-version: Fixed from version 6.4rc3" + +CVE_STATUS[CVE-2023-31085] = "fixed-version: Fixed from version 6.6rc5" + +CVE_STATUS[CVE-2023-3111] = "fixed-version: Fixed from version 6.0rc2" + +CVE_STATUS[CVE-2023-3117] = "fixed-version: Fixed from version 6.4rc7" + +CVE_STATUS[CVE-2023-31248] = "fixed-version: Fixed from version 6.5rc2" + +CVE_STATUS[CVE-2023-3141] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2023-31436] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-3159] = "fixed-version: Fixed from version 5.18rc6" + +CVE_STATUS[CVE-2023-3161] = "fixed-version: Fixed from version 6.2rc7" + +CVE_STATUS[CVE-2023-3212] = "fixed-version: Fixed from version 6.4rc2" + +CVE_STATUS[CVE-2023-3220] = "fixed-version: Fixed from version 6.3rc1" + +CVE_STATUS[CVE-2023-32233] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2023-32247] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2023-32248] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2023-32250] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2023-32252] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2023-32254] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2023-32257] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2023-32258] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2023-32269] = "fixed-version: Fixed from version 6.2rc7" + +# CVE-2023-32629 has no known resolution + +CVE_STATUS[CVE-2023-3268] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2023-3269] = "fixed-version: Fixed from version 6.5rc1" + +CVE_STATUS[CVE-2023-3312] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2023-3317] = "fixed-version: Fixed from version 6.3rc6" + +CVE_STATUS[CVE-2023-33203] = "fixed-version: Fixed from version 6.3rc4" + +CVE_STATUS[CVE-2023-33250] = "fixed-version: Fixed from version 6.5rc1" + +CVE_STATUS[CVE-2023-33288] = "fixed-version: Fixed from version 6.3rc4" + +CVE_STATUS[CVE-2023-3338] = "fixed-version: Fixed from version 6.1rc1" + +CVE_STATUS[CVE-2023-3355] = "fixed-version: Fixed from version 6.3rc1" + +CVE_STATUS[CVE-2023-3357] = "fixed-version: Fixed from version 6.2rc1" + +CVE_STATUS[CVE-2023-3358] = "fixed-version: Fixed from version 6.2rc5" + +CVE_STATUS[CVE-2023-3359] = "fixed-version: Fixed from version 6.2rc7" + +CVE_STATUS[CVE-2023-3389] = "fixed-version: Fixed from version 6.0rc1" + +CVE_STATUS[CVE-2023-3390] = "fixed-version: Fixed from version 6.4rc7" + +CVE_STATUS[CVE-2023-33951] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2023-33952] = "fixed-version: Fixed from version 6.4rc1" + +# CVE-2023-3397 has no known resolution + +CVE_STATUS[CVE-2023-34255] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2023-34256] = "fixed-version: Fixed from version 6.4rc2" + +CVE_STATUS[CVE-2023-34319] = "fixed-version: Fixed from version 6.5rc6" + +CVE_STATUS[CVE-2023-34324] = "fixed-version: Fixed from version 6.6rc6" + +CVE_STATUS[CVE-2023-3439] = "fixed-version: Fixed from version 5.18rc5" + +CVE_STATUS[CVE-2023-35001] = "fixed-version: Fixed from version 6.5rc2" + +CVE_STATUS[CVE-2023-3567] = "fixed-version: Fixed from version 6.2rc7" + +# CVE-2023-35693 has no known resolution + +CVE_STATUS[CVE-2023-35788] = "fixed-version: Fixed from version 6.4rc5" + +CVE_STATUS[CVE-2023-35823] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2023-35824] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2023-35826] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2023-35827] = "fixed-version: Fixed from version 6.6rc6" + +CVE_STATUS[CVE-2023-35828] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2023-35829] = "fixed-version: Fixed from version 6.4rc1" + +CVE_STATUS[CVE-2023-3609] = "fixed-version: Fixed from version 6.4rc7" + +CVE_STATUS[CVE-2023-3610] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-3611] = "fixed-version: Fixed from version 6.5rc2" + +# CVE-2023-3640 has no known resolution + +CVE_STATUS[CVE-2023-37453] = "fixed-version: Fixed from version 6.6rc1" + +# CVE-2023-37454 has no known resolution + +CVE_STATUS[CVE-2023-3772] = "fixed-version: Fixed from version 6.5rc7" + +CVE_STATUS[CVE-2023-3773] = "fixed-version: Fixed from version 6.5rc7" + +CVE_STATUS[CVE-2023-3776] = "fixed-version: Fixed from version 6.5rc2" + +CVE_STATUS[CVE-2023-3777] = "fixed-version: Fixed from version 6.5rc3" + +CVE_STATUS[CVE-2023-3812] = "fixed-version: Fixed from version 6.1rc4" + +CVE_STATUS[CVE-2023-38409] = "fixed-version: Fixed from version 6.3rc7" + +CVE_STATUS[CVE-2023-38426] = "fixed-version: Fixed from version 6.4rc3" + +CVE_STATUS[CVE-2023-38427] = "fixed-version: Fixed from version 6.4rc6" + +CVE_STATUS[CVE-2023-38428] = "fixed-version: Fixed from version 6.4rc3" + +CVE_STATUS[CVE-2023-38429] = "fixed-version: Fixed from version 6.4rc3" + +CVE_STATUS[CVE-2023-38430] = "fixed-version: Fixed from version 6.4rc6" + +CVE_STATUS[CVE-2023-38431] = "fixed-version: Fixed from version 6.4rc6" + +CVE_STATUS[CVE-2023-38432] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-3863] = "fixed-version: Fixed from version 6.5rc1" + +CVE_STATUS[CVE-2023-3865] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-3866] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-3867] = "fixed-version: Fixed from version 6.5rc1" + +CVE_STATUS[CVE-2023-39189] = "fixed-version: Fixed from version 6.6rc1" + +CVE_STATUS[CVE-2023-39191] = "fixed-version: Fixed from version 6.3rc1" + +CVE_STATUS[CVE-2023-39192] = "fixed-version: Fixed from version 6.6rc1" + +CVE_STATUS[CVE-2023-39193] = "fixed-version: Fixed from version 6.6rc1" + +CVE_STATUS[CVE-2023-39194] = "fixed-version: Fixed from version 6.5rc7" + +CVE_STATUS[CVE-2023-39197] = "fixed-version: Fixed from version 6.5rc1" + +CVE_STATUS[CVE-2023-39198] = "fixed-version: Fixed from version 6.5rc7" + +CVE_STATUS[CVE-2023-4004] = "fixed-version: Fixed from version 6.5rc3" + +# CVE-2023-4010 has no known resolution + +CVE_STATUS[CVE-2023-4015] = "fixed-version: Fixed from version 6.5rc4" + +CVE_STATUS[CVE-2023-40283] = "fixed-version: Fixed from version 6.5rc1" + +CVE_STATUS[CVE-2023-40791] = "fixed-version: Fixed from version 6.5rc6" + +CVE_STATUS[CVE-2023-4128] = "fixed-version: Fixed from version 6.5rc5" + +CVE_STATUS[CVE-2023-4132] = "fixed-version: Fixed from version 6.5rc1" + +CVE_STATUS[CVE-2023-4133] = "fixed-version: Fixed from version 6.3" + +CVE_STATUS[CVE-2023-4134] = "fixed-version: Fixed from version 6.5rc1" + +CVE_STATUS[CVE-2023-4147] = "fixed-version: Fixed from version 6.5rc4" + +CVE_STATUS[CVE-2023-4155] = "fixed-version: Fixed from version 6.5rc6" + +CVE_STATUS[CVE-2023-4194] = "fixed-version: Fixed from version 6.5rc5" + +CVE_STATUS[CVE-2023-4206] = "fixed-version: Fixed from version 6.5rc5" + +CVE_STATUS[CVE-2023-4207] = "fixed-version: Fixed from version 6.5rc5" + +CVE_STATUS[CVE-2023-4208] = "fixed-version: Fixed from version 6.5rc5" + +CVE_STATUS[CVE-2023-4244] = "fixed-version: Fixed from version 6.5rc7" + +CVE_STATUS[CVE-2023-4273] = "fixed-version: Fixed from version 6.5rc5" + +CVE_STATUS[CVE-2023-42752] = "fixed-version: Fixed from version 6.6rc1" + +CVE_STATUS[CVE-2023-42753] = "fixed-version: Fixed from version 6.6rc1" + +CVE_STATUS[CVE-2023-42754] = "fixed-version: Fixed from version 6.6rc3" + +CVE_STATUS[CVE-2023-42755] = "fixed-version: Fixed from version 6.3rc1" + +CVE_STATUS[CVE-2023-42756] = "fixed-version: Fixed from version 6.6rc3" + +CVE_STATUS[CVE-2023-4385] = "fixed-version: Fixed from version 5.19rc1" + +CVE_STATUS[CVE-2023-4387] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2023-4389] = "fixed-version: Fixed from version 5.18rc3" + +CVE_STATUS[CVE-2023-4394] = "fixed-version: Fixed from version 6.0rc3" + +CVE_STATUS[CVE-2023-44466] = "fixed-version: Fixed from version 6.5rc2" + +CVE_STATUS[CVE-2023-4459] = "fixed-version: Fixed from version 5.18" + +CVE_STATUS[CVE-2023-4563] = "fixed-version: Fixed from version 6.5rc6" + +CVE_STATUS[CVE-2023-4569] = "fixed-version: Fixed from version 6.5rc7" + +CVE_STATUS[CVE-2023-45862] = "fixed-version: Fixed from version 6.3rc1" + +CVE_STATUS[CVE-2023-45863] = "fixed-version: Fixed from version 6.3rc1" + +CVE_STATUS[CVE-2023-45871] = "fixed-version: Fixed from version 6.6rc1" + +CVE_STATUS[CVE-2023-45898] = "fixed-version: Fixed from version 6.6rc1" + +CVE_STATUS[CVE-2023-4610] = "fixed-version: Fixed from version 6.4" + +CVE_STATUS[CVE-2023-4611] = "fixed-version: Fixed from version 6.5rc4" + +CVE_STATUS[CVE-2023-4622] = "fixed-version: Fixed from version 6.5rc1" + +CVE_STATUS[CVE-2023-4623] = "fixed-version: Fixed from version 6.6rc1" + +CVE_STATUS[CVE-2023-46343] = "fixed-version: Fixed from version 6.6rc7" + +CVE_STATUS[CVE-2023-46813] = "fixed-version: Fixed from version 6.6rc7" + +CVE_STATUS[CVE-2023-46838] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2023-46862] = "fixed-version: Fixed from version 6.6" + +# CVE-2023-47233 has no known resolution + +CVE_STATUS[CVE-2023-4732] = "fixed-version: Fixed from version 5.14rc1" + +CVE_STATUS[CVE-2023-4881] = "fixed-version: Fixed from version 6.6rc1" + +CVE_STATUS[CVE-2023-4921] = "fixed-version: Fixed from version 6.6rc1" + +CVE_STATUS[CVE-2023-50431] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2023-5090] = "fixed-version: Fixed from version 6.6rc7" + +CVE_STATUS[CVE-2023-51042] = "fixed-version: Fixed from version 6.5rc1" + +CVE_STATUS[CVE-2023-51043] = "fixed-version: Fixed from version 6.5rc3" + +CVE_STATUS[CVE-2023-5158] = "fixed-version: Fixed from version 6.6rc5" + +CVE_STATUS[CVE-2023-51779] = "cpe-stable-backport: Backported in 6.6.9" + +CVE_STATUS[CVE-2023-5178] = "fixed-version: Fixed from version 6.6rc7" + +CVE_STATUS[CVE-2023-51780] = "cpe-stable-backport: Backported in 6.6.8" + +CVE_STATUS[CVE-2023-51781] = "cpe-stable-backport: Backported in 6.6.8" + +CVE_STATUS[CVE-2023-51782] = "cpe-stable-backport: Backported in 6.6.8" + +CVE_STATUS[CVE-2023-5197] = "fixed-version: Fixed from version 6.6rc3" + +CVE_STATUS[CVE-2023-52340] = "fixed-version: Fixed from version 6.3rc1" + +CVE_STATUS[CVE-2023-52429] = "cpe-stable-backport: Backported in 6.6.18" + +CVE_STATUS[CVE-2023-52433] = "fixed-version: Fixed from version 6.6rc1" + +CVE_STATUS[CVE-2023-52434] = "cpe-stable-backport: Backported in 6.6.8" + +CVE_STATUS[CVE-2023-52435] = "cpe-stable-backport: Backported in 6.6.11" + +CVE_STATUS[CVE-2023-52436] = "cpe-stable-backport: Backported in 6.6.13" + +CVE_STATUS[CVE-2023-52438] = "cpe-stable-backport: Backported in 6.6.13" + +CVE_STATUS[CVE-2023-52439] = "cpe-stable-backport: Backported in 6.6.13" + +CVE_STATUS[CVE-2023-52440] = "fixed-version: Fixed from version 6.6rc1" + +CVE_STATUS[CVE-2023-52441] = "fixed-version: Fixed from version 6.5rc4" + +CVE_STATUS[CVE-2023-52442] = "fixed-version: Fixed from version 6.5rc4" + +CVE_STATUS[CVE-2023-52443] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2023-52444] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2023-52445] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2023-52446] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2023-52447] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2023-52448] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2023-52449] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2023-52450] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2023-52451] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2023-52452] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2023-52453] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2023-52454] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2023-52455] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2023-52456] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2023-52457] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2023-52458] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2023-52459] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2023-52460] = "fixed-version: only affects 6.7rc1 onwards" + +CVE_STATUS[CVE-2023-52461] = "fixed-version: only affects 6.7rc1 onwards" + +CVE_STATUS[CVE-2023-52462] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2023-52463] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2023-52464] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2023-5345] = "fixed-version: Fixed from version 6.6rc4" + +CVE_STATUS[CVE-2023-5633] = "fixed-version: Fixed from version 6.6rc6" + +CVE_STATUS[CVE-2023-5717] = "fixed-version: Fixed from version 6.6rc7" + +CVE_STATUS[CVE-2023-5972] = "fixed-version: Fixed from version 6.6rc7" + +CVE_STATUS[CVE-2023-6039] = "fixed-version: Fixed from version 6.5rc5" + +CVE_STATUS[CVE-2023-6040] = "fixed-version: Fixed from version 5.18rc1" + +CVE_STATUS[CVE-2023-6111] = "cpe-stable-backport: Backported in 6.6.3" + +CVE_STATUS[CVE-2023-6121] = "cpe-stable-backport: Backported in 6.6.4" + +CVE_STATUS[CVE-2023-6176] = "fixed-version: Fixed from version 6.6rc2" + +CVE_STATUS[CVE-2023-6200] = "cpe-stable-backport: Backported in 6.6.9" + +# CVE-2023-6238 has no known resolution + +# CVE-2023-6240 has no known resolution + +# CVE-2023-6270 has no known resolution + +# CVE-2023-6356 has no known resolution + +CVE_STATUS[CVE-2023-6531] = "cpe-stable-backport: Backported in 6.6.7" + +# CVE-2023-6535 has no known resolution + +# CVE-2023-6536 has no known resolution + +CVE_STATUS[CVE-2023-6546] = "fixed-version: Fixed from version 6.5rc7" + +CVE_STATUS[CVE-2023-6560] = "cpe-stable-backport: Backported in 6.6.5" + +CVE_STATUS[CVE-2023-6606] = "cpe-stable-backport: Backported in 6.6.9" + +CVE_STATUS[CVE-2023-6610] = "cpe-stable-backport: Backported in 6.6.13" + +CVE_STATUS[CVE-2023-6622] = "cpe-stable-backport: Backported in 6.6.7" + +CVE_STATUS[CVE-2023-6679] = "fixed-version: only affects 6.7rc1 onwards" + +CVE_STATUS[CVE-2023-6817] = "cpe-stable-backport: Backported in 6.6.7" + +CVE_STATUS[CVE-2023-6915] = "cpe-stable-backport: Backported in 6.6.13" + +CVE_STATUS[CVE-2023-6931] = "cpe-stable-backport: Backported in 6.6.7" + +CVE_STATUS[CVE-2023-6932] = "cpe-stable-backport: Backported in 6.6.5" + +# CVE-2023-7042 has no known resolution + +CVE_STATUS[CVE-2023-7192] = "fixed-version: Fixed from version 6.3rc1" + +CVE_STATUS[CVE-2024-0193] = "cpe-stable-backport: Backported in 6.6.10" + +CVE_STATUS[CVE-2024-0340] = "fixed-version: Fixed from version 6.4rc6" + +CVE_STATUS[CVE-2024-0443] = "fixed-version: Fixed from version 6.4rc7" + +CVE_STATUS[CVE-2024-0562] = "fixed-version: Fixed from version 6.0rc3" + +# CVE-2024-0564 has no known resolution + +CVE_STATUS[CVE-2024-0565] = "cpe-stable-backport: Backported in 6.6.8" + +CVE_STATUS[CVE-2024-0582] = "cpe-stable-backport: Backported in 6.6.5" + +CVE_STATUS[CVE-2024-0584] = "cpe-stable-backport: Backported in 6.6.5" + +CVE_STATUS[CVE-2024-0607] = "cpe-stable-backport: Backported in 6.6.3" + +CVE_STATUS[CVE-2024-0639] = "fixed-version: Fixed from version 6.5rc1" + +CVE_STATUS[CVE-2024-0641] = "fixed-version: Fixed from version 6.6rc5" + +CVE_STATUS[CVE-2024-0646] = "cpe-stable-backport: Backported in 6.6.7" + +CVE_STATUS[CVE-2024-0775] = "fixed-version: Fixed from version 6.4rc2" + +# CVE-2024-0841 has no known resolution + +CVE_STATUS[CVE-2024-1085] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2024-1086] = "cpe-stable-backport: Backported in 6.6.15" + +CVE_STATUS[CVE-2024-1151] = "cpe-stable-backport: Backported in 6.6.18" + +CVE_STATUS[CVE-2024-1312] = "fixed-version: Fixed from version 6.5rc4" + +# CVE-2024-21803 has no known resolution + +# CVE-2024-22099 has no known resolution + +# CVE-2024-22386 has no known resolution + +CVE_STATUS[CVE-2024-22705] = "cpe-stable-backport: Backported in 6.6.10" + +# CVE-2024-23196 has no known resolution + +# CVE-2024-23307 has no known resolution + +# CVE-2024-23848 has no known resolution + +CVE_STATUS[CVE-2024-23849] = "cpe-stable-backport: Backported in 6.6.15" + +CVE_STATUS[CVE-2024-23850] = "cpe-stable-backport: Backported in 6.6.18" + +CVE_STATUS[CVE-2024-23851] = "cpe-stable-backport: Backported in 6.6.18" + +CVE_STATUS[CVE-2024-24855] = "fixed-version: Fixed from version 6.5rc2" + +# CVE-2024-24857 has no known resolution + +# CVE-2024-24858 has no known resolution + +# CVE-2024-24859 has no known resolution + +CVE_STATUS[CVE-2024-24860] = "cpe-stable-backport: Backported in 6.6.14" + +# CVE-2024-24861 has no known resolution + +# CVE-2024-24864 has no known resolution + +# CVE-2024-25739 has no known resolution + +# CVE-2024-25740 has no known resolution + +# CVE-2024-25741 has no known resolution + +CVE_STATUS[CVE-2024-25744] = "cpe-stable-backport: Backported in 6.6.7" + +CVE_STATUS[CVE-2024-26581] = "cpe-stable-backport: Backported in 6.6.17" + +CVE_STATUS[CVE-2024-26582] = "cpe-stable-backport: Backported in 6.6.18" + +CVE_STATUS[CVE-2024-26583] = "cpe-stable-backport: Backported in 6.6.18" + +CVE_STATUS[CVE-2024-26584] = "cpe-stable-backport: Backported in 6.6.18" + +CVE_STATUS[CVE-2024-26585] = "cpe-stable-backport: Backported in 6.6.18" + +CVE_STATUS[CVE-2024-26586] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2024-26587] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2024-26588] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2024-26589] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2024-26590] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2024-26591] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2024-26592] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2024-26593] = "cpe-stable-backport: Backported in 6.6.18" + +CVE_STATUS[CVE-2024-26594] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2024-26595] = "cpe-stable-backport: Backported in 6.6.14" + +# CVE-2024-26596 needs backporting (fixed from 6.8rc1) + +CVE_STATUS[CVE-2024-26597] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2024-26598] = "cpe-stable-backport: Backported in 6.6.14" + +CVE_STATUS[CVE-2024-26599] = "cpe-stable-backport: Backported in 6.6.14" + diff --git a/meta/recipes-kernel/linux/generate-cve-exclusions.py b/meta/recipes-kernel/linux/generate-cve-exclusions.py new file mode 100755 index 0000000000..aa9195aab4 --- /dev/null +++ b/meta/recipes-kernel/linux/generate-cve-exclusions.py @@ -0,0 +1,98 @@ +#! /usr/bin/env python3 + +# Generate granular CVE status metadata for a specific version of the kernel +# using data from linuxkernelcves.com. +# +# SPDX-License-Identifier: GPL-2.0-only + +import argparse +import datetime +import json +import pathlib +import re + +from packaging.version import Version + + +def parse_version(s): + """ + Parse the version string and either return a packaging.version.Version, or + None if the string was unset or "unk". + """ + if s and s != "unk": + # packaging.version.Version doesn't approve of versions like v5.12-rc1-dontuse + s = s.replace("-dontuse", "") + return Version(s) + return None + + +def main(argp=None): + parser = argparse.ArgumentParser() + parser.add_argument("datadir", type=pathlib.Path, help="Path to a clone of https://github.com/nluedtke/linux_kernel_cves") + parser.add_argument("version", type=Version, help="Kernel version number to generate data for, such as 6.1.38") + + args = parser.parse_args(argp) + datadir = args.datadir + version = args.version + base_version = f"{version.major}.{version.minor}" + + with open(datadir / "data" / "kernel_cves.json", "r") as f: + cve_data = json.load(f) + + with open(datadir / "data" / "stream_fixes.json", "r") as f: + stream_data = json.load(f) + + print(f""" +# Auto-generated CVE metadata, DO NOT EDIT BY HAND. +# Generated at {datetime.datetime.now(datetime.timezone.utc)} for version {version} + +python check_kernel_cve_status_version() {{ + this_version = "{version}" + kernel_version = d.getVar("LINUX_VERSION") + if kernel_version != this_version: + bb.warn("Kernel CVE status needs updating: generated for %s but kernel is %s" % (this_version, kernel_version)) +}} +do_cve_check[prefuncs] += "check_kernel_cve_status_version" +""") + + for cve, data in cve_data.items(): + if "affected_versions" not in data: + print(f"# Skipping {cve}, no affected_versions") + print() + continue + + affected = data["affected_versions"] + first_affected, fixed = re.search(r"(.+) to (.+)", affected).groups() + first_affected = parse_version(first_affected) + fixed = parse_version(fixed) + + if not fixed: + print(f"# {cve} has no known resolution") + elif first_affected and version < first_affected: + print(f'CVE_STATUS[{cve}] = "fixed-version: only affects {first_affected} onwards"') + elif fixed <= version: + print( + f'CVE_STATUS[{cve}] = "fixed-version: Fixed from version {fixed}"' + ) + else: + if cve in stream_data: + backport_data = stream_data[cve] + if base_version in backport_data: + backport_ver = Version(backport_data[base_version]["fixed_version"]) + if backport_ver <= version: + print( + f'CVE_STATUS[{cve}] = "cpe-stable-backport: Backported in {backport_ver}"' + ) + else: + # TODO print a note that the kernel needs bumping + print(f"# {cve} needs backporting (fixed from {backport_ver})") + else: + print(f"# {cve} needs backporting (fixed from {fixed})") + else: + print(f"# {cve} needs backporting (fixed from {fixed})") + + print() + + +if __name__ == "__main__": + main() diff --git a/meta/recipes-kernel/linux/kernel-devsrc.bb b/meta/recipes-kernel/linux/kernel-devsrc.bb index 5ec5929735..fafab475f3 100644 --- a/meta/recipes-kernel/linux/kernel-devsrc.bb +++ b/meta/recipes-kernel/linux/kernel-devsrc.bb @@ -5,7 +5,7 @@ development or external module builds" SECTION = "kernel" -LICENSE = "GPLv2" +LICENSE = "GPL-2.0-only" inherit linux-kernel-base @@ -47,198 +47,342 @@ do_install() { # create a /usr/src/kernel symlink to /lib/modules/<version>/source mkdir -p ${D}/usr/src ( - cd ${D}/usr/src - lnr ${D}${KERNEL_BUILD_ROOT}${KERNEL_VERSION}/source kernel + cd ${D}/usr/src + ln -rs ${D}${KERNEL_BUILD_ROOT}${KERNEL_VERSION}/source kernel ) # for on target purposes, we unify build and source ( - cd $kerneldir - ln -s build source + cd $kerneldir + ln -s build source ) # first copy everything ( - cd ${S} - cp --parents $(find -type f -name "Makefile*" -o -name "Kconfig*") $kerneldir/build - cp --parents $(find -type f -name "Build" -o -name "Build.include") $kerneldir/build + cd ${S} + cp --parents $(find -type f -name "Makefile*" -o -name "Kconfig*") $kerneldir/build + cp --parents $(find -type f -name "Build" -o -name "Build.include") $kerneldir/build ) # then drop all but the needed Makefiles/Kconfig files - rm -rf $kerneldir/build/Documentation rm -rf $kerneldir/build/scripts rm -rf $kerneldir/build/include # now copy in parts from the build that we'll need later ( - cd ${B} - - cp Module.symvers $kerneldir/build - cp System.map* $kerneldir/build - if [ -s Module.markers ]; then - cp Module.markers $kerneldir/build - fi - - cp .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 - # here. Left as a reference to indicate that we know the scripts must - # be dealt with. - # cp -a scripts $kerneldir/build + cd ${B} + + if [ -s Module.symvers ]; then + cp Module.symvers $kerneldir/build + fi + cp System.map* $kerneldir/build + if [ -s Module.markers ]; then + cp Module.markers $kerneldir/build + fi + + 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 + # here. Left as a reference to indicate that we know the scripts must + # 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 - if [ -f arch/${ARCH}/*lds ]; then - cp -a arch/${ARCH}/*lds $kerneldir/build/arch/${ARCH} - fi - - rm -f $kerneldir/build/scripts/*.o - rm -f $kerneldir/build/scripts/*/*.o - - if [ "${ARCH}" = "powerpc" ]; then - if [ -e arch/powerpc/lib/crtsavres.S ] || - [ -e arch/powerpc/lib/crtsavres.o ]; then - cp -a --parents arch/powerpc/lib/crtsavres.[So] $kerneldir/build/ - fi - fi - - if [ "${ARCH}" = "arm64" ]; then - cp -a --parents arch/arm64/kernel/vdso/vdso.lds $kerneldir/build/ - fi - - cp -a include $kerneldir/build/include + cp -a arch/${ARCH}/scripts $kerneldir/build/arch/${ARCH} + fi + if [ -f arch/${ARCH}/*lds ]; then + cp -a arch/${ARCH}/*lds $kerneldir/build/arch/${ARCH} + fi + + rm -f $kerneldir/build/scripts/*.o + rm -f $kerneldir/build/scripts/*/*.o + + if [ "${ARCH}" = "powerpc" ]; then + if [ -e arch/powerpc/lib/crtsavres.S ] || + [ -e arch/powerpc/lib/crtsavres.o ]; then + cp -a --parents arch/powerpc/lib/crtsavres.[So] $kerneldir/build/ + fi + fi + + if [ "${ARCH}" = "arm64" -o "${ARCH}" = "riscv" ]; then + if [ -e arch/${ARCH}/kernel/vdso/vdso.lds ]; then + cp -a --parents arch/${ARCH}/kernel/vdso/vdso.lds $kerneldir/build/ + fi + 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 || : + # v5.19+ + cp -a --parents arch/powerpc/kernel/vdso/vdso*.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 || : + + rm -f $kerneldir/include/generated/.vdso-offsets.h.cmd + rm -f $kerneldir/build/include/generated/.vdso-offsets.h.cmd + rm -f $kerneldir/build/include/generated/.compat_vdso-offsets.h.cmd + rm -f $kerneldir/build/include/generated/.vdso32-offsets.h.cmd ) # now grab the chunks from the source tree that we need ( - cd ${S} - - cp -a scripts $kerneldir/build - - # if our build dir had objtool, it will also be rebuilt on target, so - # we copy what is required for that build - if [ -f ${B}/tools/objtool/objtool ]; then - # these are a few files associated with objtool, since we'll need to - # rebuild it - cp -a --parents tools/build/Build.include $kerneldir/build/ - cp -a --parents tools/build/Build $kerneldir/build/ - cp -a --parents tools/build/fixdep.c $kerneldir/build/ - cp -a --parents tools/scripts/utilities.mak $kerneldir/build/ - - # 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/subcmd/* $kerneldir/build/ - - cp -a --parents tools/include/* $kerneldir/build/ - fi - - if [ "${ARCH}" = "arm64" ]; then - # arch/arm64/include/asm/xen references arch/arm - cp -a --parents arch/arm/include/asm/xen $kerneldir/build/ - # arch/arm64/include/asm/opcodes.h references arch/arm - cp -a --parents arch/arm/include/asm/opcodes.h $kerneldir/build/ - - cp -a --parents arch/arm64/kernel/vdso/gettimeofday.S $kerneldir/build/ + cd ${S} + + cp -a scripts $kerneldir/build + + # for v6.1+ (otherwise we are missing multiple default targets) + cp -a --parents Kbuild $kerneldir/build 2>/dev/null || : + + # For v6.6+ the debian packing is moved out to seperate rules file + # Remove as we else would ned to RDEPEND on make + rm $kerneldir/build/scripts/package/debian/rules 2>/dev/null || : + + # if our build dir had objtool, it will also be rebuilt on target, so + # we copy what is required for that build + if [ -f ${B}/tools/objtool/objtool ]; then + # these are a few files associated with objtool, since we'll need to + # rebuild it + cp -a --parents tools/build/Build.include $kerneldir/build/ + cp -a --parents tools/build/Build $kerneldir/build/ + cp -a --parents tools/build/fixdep.c $kerneldir/build/ + cp -a --parents tools/scripts/utilities.mak $kerneldir/build/ + + # extra files, just in case + cp -a --parents tools/objtool/* $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 + # arch/arm64/include/asm/xen references arch/arm + cp -a --parents arch/arm/include/asm/xen $kerneldir/build/ + # arch/arm64/include/asm/opcodes.h references arch/arm + cp -a --parents arch/arm/include/asm/opcodes.h $kerneldir/build/ + + # v6.1+ + cp -a --parents arch/arm64/kernel/asm-offsets.c $kerneldir/build/ + + cp -a --parents arch/arm64/kernel/vdso/*gettimeofday.* $kerneldir/build/ cp -a --parents arch/arm64/kernel/vdso/sigreturn.S $kerneldir/build/ 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/ - fi + 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 || : + + # 5.19+ + cp -a --parents arch/arm64/tools/gen-sysreg.awk $kerneldir/build/ 2>/dev/null || : + cp -a --parents arch/arm64/tools/sysreg $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 + if [ -e $kerneldir/build/arch/arm64/tools/gen-sysreg.awk ]; then + sed -i -e "s,#!.*awk.*,#!${USRBINPATH}/env awk," $kerneldir/build/arch/arm64/tools/gen-sysreg.awk + fi + fi + + if [ "${ARCH}" = "powerpc" ]; then + # 5.0 needs these files, but don't error if they aren't present in the source + 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 || : + + # v5.19+ + cp -a --parents arch/powerpc/kernel/vdso/*.S $kerneldir/build 2>/dev/null || : + cp -a --parents arch/powerpc/kernel/vdso/*gettimeofday.* $kerneldir/build 2>/dev/null || : + cp -a --parents arch/powerpc/kernel/vdso/gen_vdso*_offsets.sh $kerneldir/build/ 2>/dev/null || : + + # v6,1+ + cp -a --parents arch/powerpc/kernel/asm-offsets.c $kerneldir/build/ 2>/dev/null || : + cp -a --parents arch/powerpc/kernel/head_booke.h $kerneldir/build/ 2>/dev/null || : + fi + if [ "${ARCH}" = "riscv" ]; then + cp -a --parents arch/riscv/kernel/vdso/*gettimeofday.* $kerneldir/build/ + cp -a --parents arch/riscv/kernel/vdso/note.S $kerneldir/build/ + # v6.1+ + cp -a --parents arch/riscv/kernel/asm-offsets.c $kerneldir/build/ + if [ -e arch/riscv/kernel/vdso/gen_vdso_offsets.sh ]; then + cp -a --parents arch/riscv/kernel/vdso/gen_vdso_offsets.sh $kerneldir/build/ + fi + cp -a --parents arch/riscv/kernel/vdso/* $kerneldir/build/ 2>/dev/null || : + if [ -e arch/riscv/kernel/compat_vdso/gen_compat_vdso_offsets.sh ]; then + cp -a --parents arch/riscv/kernel/compat_vdso/gen_compat_vdso_offsets.sh $kerneldir/build/ + fi + cp -a --parents arch/riscv/kernel/compat_vdso/* $kerneldir/build/ 2>/dev/null || : + fi - if [ "${ARCH}" = "powerpc" ]; then - # 5.0 needs these files, but don't error if they aren't present in the source - 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 || : - fi + # include the machine specific headers for ARM variants, if available. + if [ "${ARCH}" = "arm" ]; then + cp -a --parents arch/${ARCH}/mach-*/include $kerneldir/build/ - # include the machine specific headers for ARM variants, if available. - if [ "${ARCH}" = "arm" ]; then - cp -a --parents arch/${ARCH}/mach-*/include $kerneldir/build/ + # include a few files for 'make prepare' + cp -a --parents arch/arm/tools/gen-mach-types $kerneldir/build/ + cp -a --parents arch/arm/tools/mach-types $kerneldir/build/ - # include a few files for 'make prepare' - cp -a --parents arch/arm/tools/gen-mach-types $kerneldir/build/ - cp -a --parents arch/arm/tools/mach-types $kerneldir/build/ + # 5.19+ + cp -a --parents arch/arm/tools/gen-sysreg.awk $kerneldir/build/ 2>/dev/null || : - # ARM syscall table tools only exist for kernels v4.10 or later + # ARM syscall table tools only exist for kernels v4.10 or later SYSCALL_TOOLS=$(find arch/arm/tools -name "syscall*") if [ -n "$SYSCALL_TOOLS" ] ; then - cp -a --parents $SYSCALL_TOOLS $kerneldir/build/ + cp -a --parents $SYSCALL_TOOLS $kerneldir/build/ fi - cp -a --parents arch/arm/kernel/module.lds $kerneldir/build/ - fi - - if [ -d arch/${ARCH}/include ]; then - cp -a --parents arch/${ARCH}/include $kerneldir/build/ - fi - - cp -a include $kerneldir/build - - cp -a --parents tools/include/tools/le_byteshift.h $kerneldir/build/ - 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 - - 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 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/purgatory/purgatory.c $kerneldir/build/ - - # 4.18 + have unified the purgatory files, so we ignore any errors if - # these files are not present - cp -a --parents arch/x86/purgatory/sha256.h $kerneldir/build/ 2>/dev/null || : - cp -a --parents arch/x86/purgatory/sha256.c $kerneldir/build/ 2>/dev/null || : - - cp -a --parents arch/x86/purgatory/stack.S $kerneldir/build/ - cp -a --parents arch/x86/purgatory/string.c $kerneldir/build/ - cp -a --parents arch/x86/purgatory/setup-x86_64.S $kerneldir/build/ - cp -a --parents arch/x86/purgatory/entry64.S $kerneldir/build/ - cp -a --parents arch/x86/boot/string.h $kerneldir/build/ - cp -a --parents arch/x86/boot/string.c $kerneldir/build/ - cp -a --parents arch/x86/boot/ctype.h $kerneldir/build/ - fi - - if [ "${ARCH}" = "mips" ]; then - cp -a --parents arch/mips/Kbuild.platforms $kerneldir/build/ - cp --parents $(find -type f -name "Platform") $kerneldir/build - cp --parents arch/mips/boot/tools/relocs* $kerneldir/build - cp -a --parents arch/mips/kernel/asm-offsets.c $kerneldir/build - cp -a --parents kernel/time/timeconst.bc $kerneldir/build - cp -a --parents kernel/bounds.c $kerneldir/build - cp -a --parents Kbuild $kerneldir/build - cp -a --parents arch/mips/kernel/syscalls/*.sh $kerneldir/build 2>/dev/null || : - cp -a --parents arch/mips/kernel/syscalls/*.tbl $kerneldir/build 2>/dev/null || : - cp -a --parents arch/mips/tools/elf-entry.c $kerneldir/build 2>/dev/null || : - fi + cp -a --parents arch/arm/kernel/module.lds $kerneldir/build/ 2>/dev/null || : + # v6.1+ + cp -a --parents arch/arm/kernel/asm-offsets.c $kerneldir/build/ 2>/dev/null || : + cp -a --parents arch/arm/kernel/signal.h $kerneldir/build/ 2>/dev/null || : + fi + + if [ -d arch/${ARCH}/include ]; then + cp -a --parents arch/${ARCH}/include $kerneldir/build/ + fi + + cp -a include $kerneldir/build + + cp -a --parents lib/vdso/* $kerneldir/build/ 2>/dev/null || : + + cp -a --parents tools/include/tools/le_byteshift.h $kerneldir/build/ + cp -a --parents tools/include/tools/be_byteshift.h $kerneldir/build/ + + # required for generate missing syscalls prepare phase + 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 $(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 + # these files are not present + cp -a --parents arch/x86/purgatory/sha256.h $kerneldir/build/ 2>/dev/null || : + cp -a --parents arch/x86/purgatory/sha256.c $kerneldir/build/ 2>/dev/null || : + + cp -a --parents arch/x86/purgatory/stack.S $kerneldir/build/ + cp -a --parents arch/x86/purgatory/string.c $kerneldir/build/ 2>/dev/null || : + cp -a --parents arch/x86/purgatory/setup-x86_64.S $kerneldir/build/ + cp -a --parents arch/x86/purgatory/entry64.S $kerneldir/build/ + cp -a --parents arch/x86/boot/string.h $kerneldir/build/ + 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 || : + + # v6.1+ + cp -a --parents arch/x86/kernel/asm-offsets* $kerneldir/build || : + # for capabilities.h, vmx.h + cp -a --parents arch/x86/kvm/vmx/*.h $kerneldir/build || : + # for lapic.h, hyperv.h .... + cp -a --parents arch/x86/kvm/*.h $kerneldir/build || : + fi + + # moved from arch/mips to all arches for v6.1+ + cp -a --parents kernel/time/timeconst.bc $kerneldir/build 2>/dev/null || : + cp -a --parents kernel/bounds.c $kerneldir/build 2>/dev/null || : + + if [ "${ARCH}" = "mips" ]; then + cp -a --parents arch/mips/Kbuild.platforms $kerneldir/build/ + cp --parents $(find -type f -name "Platform") $kerneldir/build + cp --parents arch/mips/boot/tools/relocs* $kerneldir/build + cp -a --parents arch/mips/kernel/asm-offsets.c $kerneldir/build + cp -a --parents Kbuild $kerneldir/build + cp -a --parents arch/mips/kernel/syscalls/*.sh $kerneldir/build 2>/dev/null || : + cp -a --parents arch/mips/kernel/syscalls/*.tbl $kerneldir/build 2>/dev/null || : + cp -a --parents arch/mips/tools/elf-entry.c $kerneldir/build 2>/dev/null || : + fi + + if [ "${ARCH}" = "loongarch" ]; then + cp -a --parents arch/loongarch/kernel/asm-offsets.c $kerneldir/build + cp -a --parents Kbuild $kerneldir/build + cp -a --parents arch/loongarch/vdso/*.S $kerneldir/build 2>/dev/null || : + cp -a --parents arch/loongarch/vdso/*gettimeofday.* $kerneldir/build 2>/dev/null || : + cp -a --parents arch/loongarch/vdso/*getcpu.* $kerneldir/build 2>/dev/null || : + cp -a --parents arch/loongarch/vdso/gen_vdso*_offsets.sh $kerneldir/build/ 2>/dev/null || : + fi # required to build scripts/selinux/genheaders/genheaders cp -a --parents security/selinux/include/* $kerneldir/build/ - # copy any localversion files - cp -a localversion* $kerneldir/build/ 2>/dev/null || : + # copy any localversion files + cp -a localversion* $kerneldir/build/ 2>/dev/null || : ) # Make sure the Makefile and version.h have a matching timestamp so that # external modules can be built touch -r $kerneldir/build/Makefile $kerneldir/build/include/generated/uapi/linux/version.h - # Copy .config to include/config/auto.conf so "make prepare" is unnecessary. - cp $kerneldir/build/.config $kerneldir/build/include/config/auto.conf + # This fixes a warning that the compilers don't match when building a module + # Change: CONFIG_CC_VERSION_TEXT="x86_64-poky-linux-gcc (GCC) 12.2.0" to "gcc (GCC) 12.2.0" + # #define CONFIG_CC_VERSION_TEXT "x86_64-poky-linux-gcc (GCC) 12.2.0" to "gcc (GCC) 12.2.0" + sed -i 's/CONFIG_CC_VERSION_TEXT=".*\(gcc.*\)"/CONFIG_CC_VERSION_TEXT="\1"/' "$kerneldir/build/.config" + sed -i 's/#define CONFIG_CC_VERSION_TEXT ".*\(gcc.*\)"/#define CONFIG_CC_VERSION_TEXT "\1"/' $kerneldir/build/include/generated/autoconf.h + sed -i 's/CONFIG_CC_VERSION_TEXT=".*\(gcc.*\)"/CONFIG_CC_VERSION_TEXT="\1"/' $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) + for ss in $(find $kerneldir/build/scripts -type f -name '*'); do + sed -i 's,/usr/bin/python2,/usr/bin/env python3,' "$ss" + sed -i 's,/usr/bin/env python2,/usr/bin/env python3,' "$ss" + sed -i 's,/usr/bin/python,/usr/bin/env python3,' "$ss" + done chown -R root:root ${D} } @@ -246,11 +390,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 python flex bison ${TCLIBC}-utils" +RDEPENDS:${PN} = "bc python3-core flex bison ${TCLIBC}-utils gawk" # 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)}" +# powerpc needs elfutils on 6.3+ +RDEPENDS:${PN} += "${@bb.utils.contains('ARCH', 'powerpc', 'elfutils-dev', '', d)}" +# 5.8+ needs gcc-plugins libmpc-dev +RDEPENDS:${PN} += "gcc-plugins libmpc-dev" +# 5.13+ needs grep for powerpc +RDEPENDS:${PN}:append:powerpc = " grep" diff --git a/meta/recipes-kernel/linux/linux-dtb.inc b/meta/recipes-kernel/linux/linux-dtb.inc deleted file mode 100644 index f1912775ca..0000000000 --- a/meta/recipes-kernel/linux/linux-dtb.inc +++ /dev/null @@ -1,3 +0,0 @@ -python() { - bb.warn("You are using the linux-dtb.inc which is deprecated. You can safely remove it as the Device Tree support is automatically enabled when KERNEL_DEVICETREE is set.") -} diff --git a/meta/recipes-kernel/linux/linux-dummy.bb b/meta/recipes-kernel/linux/linux-dummy.bb index e1c7f76760..2396f46202 100644 --- a/meta/recipes-kernel/linux/linux-dummy.bb +++ b/meta/recipes-kernel/linux/linux-dummy.bb @@ -4,29 +4,30 @@ provider for virtual/kernel to satisfy dependencies for situations \ where you wish to build the kernel externally from the build system." SECTION = "kernel" -LICENSE = "GPLv2" -LIC_FILES_CHKSUM = "file://${WORKDIR}/COPYING.GPL;md5=751419260aa954499f7abaabaa882bbe" +LICENSE = "GPL-2.0-only" +LIC_FILES_CHKSUM = "file://COPYING.GPL;md5=751419260aa954499f7abaabaa882bbe" PROVIDES += "virtual/kernel" +inherit deploy linux-dummy + PACKAGES_DYNAMIC += "^kernel-module-.*" PACKAGES_DYNAMIC += "^kernel-image-.*" PACKAGES_DYNAMIC += "^kernel-firmware-.*" PACKAGES += "kernel-modules kernel-vmlinux" -FILES_kernel-modules = "" -ALLOW_EMPTY_kernel-modules = "1" -DESCRIPTION_kernel-modules = "Kernel modules meta package" -FILES_kernel-vmlinux = "" -ALLOW_EMPTY_kernel-vmlinux = "1" -DESCRIPTION_kernel-vmlinux = "Kernel vmlinux meta package" +FILES:kernel-modules = "" +ALLOW_EMPTY:kernel-modules = "1" +DESCRIPTION:kernel-modules = "Kernel modules meta package" +FILES:kernel-vmlinux = "" +ALLOW_EMPTY:kernel-vmlinux = "1" +DESCRIPTION:kernel-vmlinux = "Kernel vmlinux meta package" INHIBIT_DEFAULT_DEPS = "1" -#COMPATIBLE_MACHINE = "your_machine" +COMPATIBLE_HOST = ".*-linux" -PR = "r1" SRC_URI = "file://COPYING.GPL" S = "${WORKDIR}" @@ -39,6 +40,10 @@ do_compile () { : } +do_compile_kernelmodules() { + : +} + do_shared_workdir () { : } @@ -58,3 +63,4 @@ do_deploy() { addtask bundle_initramfs after do_install before do_deploy addtask deploy after do_install addtask shared_workdir after do_compile before do_install +addtask compile_kernelmodules diff --git a/meta/recipes-kernel/linux/linux-yocto-dev.bb b/meta/recipes-kernel/linux/linux-yocto-dev.bb index ae8c343008..d5cba42a5c 100644 --- a/meta/recipes-kernel/linux/linux-yocto-dev.bb +++ b/meta/recipes-kernel/linux/linux-yocto-dev.bb @@ -10,17 +10,15 @@ inherit kernel require recipes-kernel/linux/linux-yocto.inc -# for ncurses tests -inherit pkgconfig # provide this .inc to set specific revisions include recipes-kernel/linux/linux-yocto-dev-revisions.inc -KBRANCH = "standard/base" +KBRANCH = "v6.9/standard/base" KMETA = "kernel-meta" -SRC_URI = "git://git.yoctoproject.org/linux-yocto-dev.git;branch=${KBRANCH};name=machine \ - git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=master;destsuffix=${KMETA}" +SRC_URI = "git://git.yoctoproject.org/linux-yocto-dev.git;branch=${KBRANCH};name=machine;protocol=https \ + git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=master;destsuffix=${KMETA};protocol=https" # Set default SRCREVs. Both the machine and meta SRCREVs are statically set # to the korg v3.7 tag, and hence prevent network access during parsing. If @@ -30,25 +28,34 @@ 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 ?= "5.0-rc+" +LINUX_VERSION ?= "6.9" LINUX_VERSION_EXTENSION ?= "-yoctodev-${LINUX_KERNEL_TYPE}" -PV = "${LINUX_VERSION}+git${SRCPV}" +PV = "${LINUX_VERSION}+git" -LIC_FILES_CHKSUM = "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814" +LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" -DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}" -DEPENDS += "openssl-native util-linux-native" +# yaml and dtschema are required for 5.16+ device tree validation, libyaml is checked +# via pkgconfig, so must always be present, but we can wrap the others to make them +# conditional +DEPENDS += "libyaml-native" -COMPATIBLE_MACHINE = "(qemuarm|qemux86|qemuppc|qemumips|qemumips64|qemux86-64)" +PACKAGECONFIG ??= "" +PACKAGECONFIG[dt-validation] = ",,python3-dtschema-native" +# we need the wrappers if validation isn't in the packageconfig +DEPENDS += "${@bb.utils.contains('PACKAGECONFIG', 'dt-validation', '', 'python3-dtschema-wrapper-native', d)}" -KERNEL_DEVICETREE_qemuarm = "versatile-pb.dtb" +COMPATIBLE_MACHINE = "^(qemuarmv5|qemuarm|qemuarm64|qemux86|qemuppc|qemumips|qemumips64|qemux86-64|qemuriscv32|qemuriscv64|qemuloongarch64)$" + +KERNEL_DEVICETREE:qemuarmv5 = "arm/versatile-pb.dtb" # 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" -KERNEL_FEATURES_append = " ${@bb.utils.contains("TUNE_FEATURES", "mx32", " cfg/x32.scc", "" ,d)}" +KERNEL_FEATURES:append = " ${KERNEL_EXTRA_FEATURES}" +KERNEL_FEATURES:append:qemuall=" cfg/virtio.scc features/drm-bochs/drm-bochs.scc" +KERNEL_FEATURES:append:qemux86=" cfg/sound.scc cfg/paravirt_kvm.scc" +KERNEL_FEATURES:append:qemux86-64=" cfg/sound.scc cfg/paravirt_kvm.scc" +KERNEL_FEATURES:append = " ${@bb.utils.contains("TUNE_FEATURES", "mx32", " cfg/x32.scc", "", d)}" +KERNEL_FEATURES:append = " ${@bb.utils.contains("DISTRO_FEATURES", "ptest", " features/scsi/scsi-debug.scc", "", d)}" +KERNEL_FEATURES:append = " ${@bb.utils.contains("DISTRO_FEATURES", "ptest", " features/gpio/mockup.scc features/gpio/sim.scc", "", d)}" KERNEL_VERSION_SANITY_SKIP = "1" diff --git a/meta/recipes-kernel/linux/linux-yocto-rt_4.19.bb b/meta/recipes-kernel/linux/linux-yocto-rt_4.19.bb deleted file mode 100644 index 6604bdf90c..0000000000 --- a/meta/recipes-kernel/linux/linux-yocto-rt_4.19.bb +++ /dev/null @@ -1,43 +0,0 @@ -KBRANCH ?= "v4.19/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("KERNEL_PACKAGE_NAME") == "kernel" and d.getVar("PREFERRED_PROVIDER_virtual/kernel") != "linux-yocto-rt": - raise bb.parse.SkipRecipe("Set PREFERRED_PROVIDER_virtual/kernel to linux-yocto-rt to enable it") -} - -SRCREV_machine ?= "4dbcaca4c9ff89e866d2b5d01df005f317c618a4" -SRCREV_meta ?= "ad235db461bf4595c668700ca8a909c322009cc1" - -SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine \ - git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-4.19;destsuffix=${KMETA}" - -LINUX_VERSION ?= "4.19.44" - -LIC_FILES_CHKSUM = "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814" - -DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}" -DEPENDS += "openssl-native util-linux-native" - -PV = "${LINUX_VERSION}+git${SRCPV}" - -KMETA = "kernel-meta" -KCONF_BSP_AUDIT_LEVEL = "2" - -LINUX_KERNEL_TYPE = "preempt-rt" - -COMPATIBLE_MACHINE = "(qemux86|qemux86-64|qemuarm|qemuarmv5|qemuarm64|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}" -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 cfg/paravirt_kvm.scc" diff --git a/meta/recipes-kernel/linux/linux-yocto-rt_5.0.bb b/meta/recipes-kernel/linux/linux-yocto-rt_5.0.bb deleted file mode 100644 index 1fe28b1bf0..0000000000 --- a/meta/recipes-kernel/linux/linux-yocto-rt_5.0.bb +++ /dev/null @@ -1,43 +0,0 @@ -KBRANCH ?= "v5.0/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("KERNEL_PACKAGE_NAME") == "kernel" and d.getVar("PREFERRED_PROVIDER_virtual/kernel") != "linux-yocto-rt": - raise bb.parse.SkipRecipe("Set PREFERRED_PROVIDER_virtual/kernel to linux-yocto-rt to enable it") -} - -SRCREV_machine ?= "9c1e84c9b81b6bf1df55f26f2e0517266c37f7eb" -SRCREV_meta ?= "31de88e51d100f2c3eefb7acb7390b0144bcfc69" - -SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine \ - git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.0;destsuffix=${KMETA}" - -LINUX_VERSION ?= "5.0.19" - -LIC_FILES_CHKSUM = "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814" - -DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}" -DEPENDS += "openssl-native util-linux-native" - -PV = "${LINUX_VERSION}+git${SRCPV}" - -KMETA = "kernel-meta" -KCONF_BSP_AUDIT_LEVEL = "2" - -LINUX_KERNEL_TYPE = "preempt-rt" - -COMPATIBLE_MACHINE = "(qemux86|qemux86-64|qemuarm|qemuarmv5|qemuarm64|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}" -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 cfg/paravirt_kvm.scc" diff --git a/meta/recipes-kernel/linux/linux-yocto-rt_6.6.bb b/meta/recipes-kernel/linux/linux-yocto-rt_6.6.bb new file mode 100644 index 0000000000..a44a08451a --- /dev/null +++ b/meta/recipes-kernel/linux/linux-yocto-rt_6.6.bb @@ -0,0 +1,48 @@ +KBRANCH ?= "v6.6/standard/preempt-rt/base" + +require recipes-kernel/linux/linux-yocto.inc + +# CVE exclusions +include recipes-kernel/linux/cve-exclusion_6.6.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("KERNEL_PACKAGE_NAME") == "kernel" and d.getVar("PREFERRED_PROVIDER_virtual/kernel") != "linux-yocto-rt": + raise bb.parse.SkipRecipe("Set PREFERRED_PROVIDER_virtual/kernel to linux-yocto-rt to enable it") +} + +SRCREV_machine ?= "19813826de57a6425518c7b3daf8dd6a04d2321f" +SRCREV_meta ?= "f7f00b22efcfcae6489e9ec7db7002685fbc078b" + +SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine;protocol=https \ + git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-6.6;destsuffix=${KMETA};protocol=https" + +LINUX_VERSION ?= "6.6.23" + +LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" + +DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}" +DEPENDS += "openssl-native util-linux-native" + +PV = "${LINUX_VERSION}+git" + +KMETA = "kernel-meta" +KCONF_BSP_AUDIT_LEVEL = "1" + +LINUX_KERNEL_TYPE = "preempt-rt" + +COMPATIBLE_MACHINE = "^(qemux86|qemux86-64|qemuarm|qemuarmv5|qemuarm64|qemuppc|qemumips)$" + +KERNEL_DEVICETREE:qemuarmv5 = "arm/versatile-pb.dtb" + +# 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 features/drm-bochs/drm-bochs.scc" +KERNEL_FEATURES:append:qemux86=" cfg/sound.scc cfg/paravirt_kvm.scc" +KERNEL_FEATURES:append:qemux86-64=" cfg/sound.scc cfg/paravirt_kvm.scc" +KERNEL_FEATURES:append = "${@bb.utils.contains("DISTRO_FEATURES", "ptest", " features/scsi/scsi-debug.scc", "", d)}" +KERNEL_FEATURES:append = "${@bb.utils.contains("DISTRO_FEATURES", "ptest", " features/gpio/mockup.scc features/gpio/sim.scc", "", d)}" diff --git a/meta/recipes-kernel/linux/linux-yocto-tiny_4.19.bb b/meta/recipes-kernel/linux/linux-yocto-tiny_4.19.bb deleted file mode 100644 index 4ca11d769a..0000000000 --- a/meta/recipes-kernel/linux/linux-yocto-tiny_4.19.bb +++ /dev/null @@ -1,32 +0,0 @@ -KBRANCH ?= "v4.19/standard/tiny/base" -KBRANCH_qemuarm ?= "v4.19/standard/tiny/arm-versatile-926ejs" - -LINUX_KERNEL_TYPE = "tiny" -KCONFIG_MODE = "--allnoconfig" - -require recipes-kernel/linux/linux-yocto.inc - -LINUX_VERSION ?= "4.19.44" -LIC_FILES_CHKSUM = "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814" - -DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}" -DEPENDS += "openssl-native util-linux-native" - -KMETA = "kernel-meta" -KCONF_BSP_AUDIT_LEVEL = "2" - -SRCREV_machine_qemuarm ?= "a3cd9d732b27e78f94634924b7232b6280dae002" -SRCREV_machine ?= "f0c6c85e155632580bd44a5db01cbb19dcc1559c" -SRCREV_meta ?= "ad235db461bf4595c668700ca8a909c322009cc1" - -PV = "${LINUX_VERSION}+git${SRCPV}" - -SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine \ - git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-4.19;destsuffix=${KMETA}" - -COMPATIBLE_MACHINE = "qemux86|qemux86-64|qemuarm|qemuarmv5" - -# Functionality flags -KERNEL_FEATURES = "" - -KERNEL_DEVICETREE_qemuarm = "versatile-pb.dtb" diff --git a/meta/recipes-kernel/linux/linux-yocto-tiny_5.0.bb b/meta/recipes-kernel/linux/linux-yocto-tiny_5.0.bb deleted file mode 100644 index a9c463cf08..0000000000 --- a/meta/recipes-kernel/linux/linux-yocto-tiny_5.0.bb +++ /dev/null @@ -1,32 +0,0 @@ -KBRANCH ?= "v5.0/standard/tiny/base" -KBRANCH_qemuarm ?= "v5.0/standard/tiny/arm-versatile-926ejs" - -LINUX_KERNEL_TYPE = "tiny" -KCONFIG_MODE = "--allnoconfig" - -require recipes-kernel/linux/linux-yocto.inc - -LINUX_VERSION ?= "5.0.19" -LIC_FILES_CHKSUM = "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814" - -DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}" -DEPENDS += "openssl-native util-linux-native" - -KMETA = "kernel-meta" -KCONF_BSP_AUDIT_LEVEL = "2" - -SRCREV_machine_qemuarm ?= "fabee455f397ba8054f35a3ad5f2250bbad93bef" -SRCREV_machine ?= "00638cdd8f92869a0f89ebe3289fdbd856ba9458" -SRCREV_meta ?= "31de88e51d100f2c3eefb7acb7390b0144bcfc69" - -PV = "${LINUX_VERSION}+git${SRCPV}" - -SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine \ - git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.0;destsuffix=${KMETA}" - -COMPATIBLE_MACHINE = "qemux86|qemux86-64|qemuarm|qemuarmv5" - -# Functionality flags -KERNEL_FEATURES = "" - -KERNEL_DEVICETREE_qemuarm = "versatile-pb.dtb" diff --git a/meta/recipes-kernel/linux/linux-yocto-tiny_6.6.bb b/meta/recipes-kernel/linux/linux-yocto-tiny_6.6.bb new file mode 100644 index 0000000000..db9e252572 --- /dev/null +++ b/meta/recipes-kernel/linux/linux-yocto-tiny_6.6.bb @@ -0,0 +1,33 @@ +KBRANCH ?= "v6.6/standard/tiny/base" + +LINUX_KERNEL_TYPE = "tiny" +KCONFIG_MODE = "--allnoconfig" + +require recipes-kernel/linux/linux-yocto.inc + +# CVE exclusions +include recipes-kernel/linux/cve-exclusion_6.6.inc + +LINUX_VERSION ?= "6.6.23" +LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" + +DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}" +DEPENDS += "openssl-native util-linux-native" + +KMETA = "kernel-meta" +KCONF_BSP_AUDIT_LEVEL = "2" + +SRCREV_machine ?= "2d01bc1d4eeade12518371139dd24a21438f523c" +SRCREV_meta ?= "f7f00b22efcfcae6489e9ec7db7002685fbc078b" + +PV = "${LINUX_VERSION}+git" + +SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine;protocol=https \ + git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-6.6;destsuffix=${KMETA};protocol=https" + +COMPATIBLE_MACHINE = "^(qemux86|qemux86-64|qemuarm64|qemuarm|qemuarmv5)$" + +# Functionality flags +KERNEL_FEATURES = "" + +KERNEL_DEVICETREE:qemuarmv5 = "arm/versatile-pb.dtb" diff --git a/meta/recipes-kernel/linux/linux-yocto.inc b/meta/recipes-kernel/linux/linux-yocto.inc index f191946f2a..0132fcffb3 100644 --- a/meta/recipes-kernel/linux/linux-yocto.inc +++ b/meta/recipes-kernel/linux/linux-yocto.inc @@ -1,12 +1,13 @@ SUMMARY = "Linux kernel" SECTION = "kernel" -LICENSE = "GPLv2" +LICENSE = "GPL-2.0-only" +HOMEPAGE = "https://www.yoctoproject.org/" LIC_FILES_CHKSUM ?= "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7" UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+\.\d+(\.\d+)*)" -INC_PR = "r4" +RECIPE_NO_UPDATE_REASON = "Recipe is updated through a separate process" # Skip processing of this recipe if it is not explicitly specified as the # PREFERRED_PROVIDER for virtual/kernel. This avoids network access required @@ -18,43 +19,29 @@ python () { } DEPENDS += "xz-native bc-native" -DEPENDS_append_aarch64 = " libgcc" -KERNEL_CC_append_aarch64 = " ${TOOLCHAIN_OPTIONS}" -KERNEL_LD_append_aarch64 = " ${TOOLCHAIN_OPTIONS}" +DEPENDS:append:aarch64 = " libgcc" +KERNEL_CC:append:aarch64 = " ${TOOLCHAIN_OPTIONS}" +KERNEL_LD:append:aarch64 = " ${TOOLCHAIN_OPTIONS}" -DEPENDS_append_nios2 = " libgcc" -KERNEL_CC_append_nios2 = " ${TOOLCHAIN_OPTIONS}" -KERNEL_LD_append_nios2 = " ${TOOLCHAIN_OPTIONS}" +DEPENDS:append:nios2 = " libgcc" +KERNEL_CC:append:nios2 = " ${TOOLCHAIN_OPTIONS}" +KERNEL_LD:append:nios2 = " ${TOOLCHAIN_OPTIONS}" -DEPENDS_append_arc = " libgcc" -KERNEL_CC_append_arc = " ${TOOLCHAIN_OPTIONS}" -KERNEL_LD_append_arc = " ${TOOLCHAIN_OPTIONS}" +DEPENDS:append:arc = " libgcc" +KERNEL_CC:append:arc = " ${TOOLCHAIN_OPTIONS}" +KERNEL_LD:append:arc = " ${TOOLCHAIN_OPTIONS}" -KERNEL_FEATURES_append_qemuall=" features/debug/printk.scc" +KERNEL_FEATURES:append:qemuall=" features/debug/printk.scc features/taskstats/taskstats.scc" -KERNEL_FEATURES_append = " ${@bb.utils.contains('MACHINE_FEATURES', 'numa', 'features/numa/numa.scc', '', d)}" +KERNEL_FEATURES:append = " ${@bb.utils.contains('MACHINE_FEATURES', 'efi', 'cfg/efi.scc', '', d)}" +KERNEL_FEATURES:append = " ${@bb.utils.contains('MACHINE_FEATURES', 'numa', 'features/numa/numa.scc', '', d)}" +KERNEL_FEATURES:append = " ${@bb.utils.contains('MACHINE_FEATURES', 'vfat', 'cfg/fs/vfat.scc', '', d)}" # A KMACHINE is the mapping of a yocto $MACHINE to what is built # by the kernel. This is typically the branch that should be built, # and it can be specific to the machine or shared # KMACHINE = "UNDEFINED" -# The distro or local.conf should set this, but if nobody cares... -LINUX_KERNEL_TYPE ??= "standard" - -# KMETA ?= "" -KBRANCH ?= "master" -KMACHINE ?= "${MACHINE}" -SRCREV_FORMAT ?= "meta_machine" - -# LEVELS: -# 0: no reporting -# 1: report options that are specified, but not in the final config -# 2: report options that are not hardware related, but set by a BSP -KCONF_AUDIT_LEVEL ?= "1" -KCONF_BSP_AUDIT_LEVEL ?= "0" -KMETA_AUDIT ?= "yes" - LINUX_VERSION_EXTENSION ??= "-yocto-${LINUX_KERNEL_TYPE}" # Pick up shared functions @@ -63,16 +50,32 @@ inherit kernel-yocto B = "${WORKDIR}/linux-${PACKAGE_ARCH}-${LINUX_KERNEL_TYPE}-build" -do_install_append(){ +do_install:append(){ if [ -n "${KMETA}" ]; then rm -rf ${STAGING_KERNEL_DIR}/${KMETA} fi } -# extra tasks -addtask kernel_version_sanity_check after do_kernel_metadata do_kernel_checkout before do_compile -addtask validate_branches before do_patch after do_kernel_checkout -addtask kernel_configcheck after do_configure before do_compile - # enable kernel-sample for oeqa/runtime/cases's ksample.py test -KERNEL_FEATURES_append_qemuall=" features/kernel-sample/kernel-sample.scc" +KERNEL_FEATURES:append:qemuall=" features/kernel-sample/kernel-sample.scc" + +KERNEL_DEBUG ?= "" +# These used to be version specific, but are now common dependencies. New +# tools / dependencies will continue to be added in version specific recipes. +DEPENDS += '${@bb.utils.contains_any("ARCH", [ "x86", "arm64", "powerpc" ], "elfutils-native", "", d)}' +DEPENDS += "openssl-native util-linux-native" +DEPENDS += "gmp-native libmpc-native" + +# Some options depend on CONFIG_PAHOLE_VERSION, so need to make pahole-native available before do_kernel_configme +do_kernel_configme[depends] += '${@bb.utils.contains("KERNEL_DEBUG", "True", "pahole-native:do_populate_sysroot", "", d)}' + +EXTRA_OEMAKE += '${@bb.utils.contains("KERNEL_DEBUG", "True", "", "PAHOLE=false", d)}' + +do_devshell:prepend() { + # setup native pkg-config variables (kconfig scripts call pkg-config directly, cannot generically be overriden to pkg-config-native) + d.setVar("PKG_CONFIG_DIR", "${STAGING_DIR_NATIVE}${libdir_native}/pkgconfig") + d.setVar("PKG_CONFIG_PATH", "${PKG_CONFIG_DIR}:${STAGING_DATADIR_NATIVE}/pkgconfig") + d.setVar("PKG_CONFIG_LIBDIR", "${PKG_CONFIG_DIR}") + d.setVarFlag("PKG_CONFIG_SYSROOT_DIR", "unexport", "1") + d.appendVar("OE_TERMINAL_EXPORTS", " PKG_CONFIG_DIR PKG_CONFIG_PATH PKG_CONFIG_LIBDIR PKG_CONFIG_SYSROOT_DIR") +} diff --git a/meta/recipes-kernel/linux/linux-yocto_4.19.bb b/meta/recipes-kernel/linux/linux-yocto_4.19.bb deleted file mode 100644 index a5fdafe6b2..0000000000 --- a/meta/recipes-kernel/linux/linux-yocto_4.19.bb +++ /dev/null @@ -1,49 +0,0 @@ -KBRANCH ?= "v4.19/standard/base" - -require recipes-kernel/linux/linux-yocto.inc - -# board specific branches -KBRANCH_qemuarm ?= "v4.19/standard/arm-versatile-926ejs" -KBRANCH_qemuarm64 ?= "v4.19/standard/qemuarm64" -KBRANCH_qemumips ?= "v4.19/standard/mti-malta32" -KBRANCH_qemuppc ?= "v4.19/standard/qemuppc" -KBRANCH_qemux86 ?= "v4.19/standard/base" -KBRANCH_qemux86-64 ?= "v4.19/standard/base" -KBRANCH_qemumips64 ?= "v4.19/standard/mti-malta64" - -SRCREV_machine_qemuarm ?= "c12bc1a098be009c44582e75af630ff573155473" -SRCREV_machine_qemuarm64 ?= "f0c6c85e155632580bd44a5db01cbb19dcc1559c" -SRCREV_machine_qemumips ?= "18ba7160ac7a094bf9659649c537303201eb022e" -SRCREV_machine_qemuppc ?= "f0c6c85e155632580bd44a5db01cbb19dcc1559c" -SRCREV_machine_qemux86 ?= "f0c6c85e155632580bd44a5db01cbb19dcc1559c" -SRCREV_machine_qemux86-64 ?= "f0c6c85e155632580bd44a5db01cbb19dcc1559c" -SRCREV_machine_qemumips64 ?= "d9c77fe2a6038848fbadd660882b78e590c3252e" -SRCREV_machine ?= "f0c6c85e155632580bd44a5db01cbb19dcc1559c" -SRCREV_meta ?= "ad235db461bf4595c668700ca8a909c322009cc1" - -SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;name=machine;branch=${KBRANCH}; \ - git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-4.19;destsuffix=${KMETA} \ - " - -LIC_FILES_CHKSUM = "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814" -LINUX_VERSION ?= "4.19.44" - -DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}" -DEPENDS += "openssl-native util-linux-native" - -PV = "${LINUX_VERSION}+git${SRCPV}" - -KMETA = "kernel-meta" -KCONF_BSP_AUDIT_LEVEL = "2" - -KERNEL_DEVICETREE_qemuarm = "versatile-pb.dtb" - -COMPATIBLE_MACHINE = "qemuarm|qemuarmv5|qemuarm64|qemux86|qemuppc|qemumips|qemumips64|qemux86-64" - -# Functionality flags -KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.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 cfg/paravirt_kvm.scc" -KERNEL_FEATURES_append = " ${@bb.utils.contains("TUNE_FEATURES", "mx32", " cfg/x32.scc", "" ,d)}" diff --git a/meta/recipes-kernel/linux/linux-yocto_5.0.bb b/meta/recipes-kernel/linux/linux-yocto_5.0.bb deleted file mode 100644 index da795d97aa..0000000000 --- a/meta/recipes-kernel/linux/linux-yocto_5.0.bb +++ /dev/null @@ -1,52 +0,0 @@ -KBRANCH ?= "v5.0/standard/base" - -require recipes-kernel/linux/linux-yocto.inc - -# board specific branches -KBRANCH_qemuarm ?= "v5.0/standard/arm-versatile-926ejs" -KBRANCH_qemuarm64 ?= "v5.0/standard/qemuarm64" -KBRANCH_qemumips ?= "v5.0/standard/mti-malta32" -KBRANCH_qemuppc ?= "v5.0/standard/qemuppc" -KBRANCH_qemux86 ?= "v5.0/standard/base" -KBRANCH_qemux86-64 ?= "v5.0/standard/base" -KBRANCH_qemumips64 ?= "v5.0/standard/mti-malta64" - -SRCREV_machine_qemuarm ?= "9161b2fa2f1cec0ba02976c389c788445858e0de" -SRCREV_machine_qemuarm64 ?= "00638cdd8f92869a0f89ebe3289fdbd856ba9458" -SRCREV_machine_qemumips ?= "7de9b8f0db98e51a666477c8e2b64f1964b45410" -SRCREV_machine_qemuppc ?= "00638cdd8f92869a0f89ebe3289fdbd856ba9458" -SRCREV_machine_qemux86 ?= "00638cdd8f92869a0f89ebe3289fdbd856ba9458" -SRCREV_machine_qemux86-64 ?= "00638cdd8f92869a0f89ebe3289fdbd856ba9458" -SRCREV_machine_qemumips64 ?= "5a8b27bcc0b16077ab8edfcd3fb25c80dc2c652e" -SRCREV_machine ?= "00638cdd8f92869a0f89ebe3289fdbd856ba9458" -SRCREV_meta ?= "31de88e51d100f2c3eefb7acb7390b0144bcfc69" - -# remap qemuarm to qemuarma15 for the 5.0 kernel -# KMACHINE_qemuarm ?= "qemuarma15" - -SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;name=machine;branch=${KBRANCH}; \ - git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.0;destsuffix=${KMETA}" - -LIC_FILES_CHKSUM = "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814" -LINUX_VERSION ?= "5.0.19" - -DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}" -DEPENDS += "openssl-native util-linux-native" - -PV = "${LINUX_VERSION}+git${SRCPV}" - -KMETA = "kernel-meta" -KCONF_BSP_AUDIT_LEVEL = "2" - -KERNEL_DEVICETREE_qemuarm = "versatile-pb.dtb" -KERNEL_DEVICETREE_qemuarmv5 = "versatile-pb.dtb" - -COMPATIBLE_MACHINE = "qemuarm|qemuarmv5|qemuarm64|qemux86|qemuppc|qemumips|qemumips64|qemux86-64" - -# Functionality flags -KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.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 cfg/paravirt_kvm.scc" -KERNEL_FEATURES_append = " ${@bb.utils.contains("TUNE_FEATURES", "mx32", " cfg/x32.scc", "" ,d)}" diff --git a/meta/recipes-kernel/linux/linux-yocto_6.6.bb b/meta/recipes-kernel/linux/linux-yocto_6.6.bb new file mode 100644 index 0000000000..43696db59b --- /dev/null +++ b/meta/recipes-kernel/linux/linux-yocto_6.6.bb @@ -0,0 +1,72 @@ +KBRANCH ?= "v6.6/standard/base" + +require recipes-kernel/linux/linux-yocto.inc + +# CVE exclusions +include recipes-kernel/linux/cve-exclusion.inc +include recipes-kernel/linux/cve-exclusion_6.6.inc + +# board specific branches +KBRANCH:qemuarm ?= "v6.6/standard/arm-versatile-926ejs" +KBRANCH:qemuarm64 ?= "v6.6/standard/qemuarm64" +KBRANCH:qemumips ?= "v6.6/standard/mti-malta32" +KBRANCH:qemuppc ?= "v6.6/standard/qemuppc" +KBRANCH:qemuriscv64 ?= "v6.6/standard/base" +KBRANCH:qemuriscv32 ?= "v6.6/standard/base" +KBRANCH:qemux86 ?= "v6.6/standard/base" +KBRANCH:qemux86-64 ?= "v6.6/standard/base" +KBRANCH:qemuloongarch64 ?= "v6.6/standard/base" +KBRANCH:qemumips64 ?= "v6.6/standard/mti-malta64" + +SRCREV_machine:qemuarm ?= "ceb94a85299b59d8840ed7ed392b1d3e4c727678" +SRCREV_machine:qemuarm64 ?= "2d01bc1d4eeade12518371139dd24a21438f523c" +SRCREV_machine:qemuloongarch64 ?= "2d01bc1d4eeade12518371139dd24a21438f523c" +SRCREV_machine:qemumips ?= "c79ffc89f8909f60de52005ef258db9752634eda" +SRCREV_machine:qemuppc ?= "2d01bc1d4eeade12518371139dd24a21438f523c" +SRCREV_machine:qemuriscv64 ?= "2d01bc1d4eeade12518371139dd24a21438f523c" +SRCREV_machine:qemuriscv32 ?= "2d01bc1d4eeade12518371139dd24a21438f523c" +SRCREV_machine:qemux86 ?= "2d01bc1d4eeade12518371139dd24a21438f523c" +SRCREV_machine:qemux86-64 ?= "2d01bc1d4eeade12518371139dd24a21438f523c" +SRCREV_machine:qemumips64 ?= "b0a73fa83073c8d7d7bc917bcbeac88d296ebe38" +SRCREV_machine ?= "2d01bc1d4eeade12518371139dd24a21438f523c" +SRCREV_meta ?= "f7f00b22efcfcae6489e9ec7db7002685fbc078b" + +# set your preferred provider of linux-yocto to 'linux-yocto-upstream', and you'll +# get the <version>/base branch, which is pure upstream -stable, and the same +# meta SRCREV as the linux-yocto-standard builds. Select your version using the +# normal PREFERRED_VERSION settings. +BBCLASSEXTEND = "devupstream:target" +SRCREV_machine:class-devupstream ?= "5c7587f69194bc9fc714953ab4c7203e6e68885b" +PN:class-devupstream = "linux-yocto-upstream" +KBRANCH:class-devupstream = "v6.6/base" + +SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;name=machine;branch=${KBRANCH};protocol=https \ + git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-6.6;destsuffix=${KMETA};protocol=https" + +LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" +LINUX_VERSION ?= "6.6.23" + +PV = "${LINUX_VERSION}+git" + +KMETA = "kernel-meta" +KCONF_BSP_AUDIT_LEVEL = "1" + +KERNEL_DEVICETREE:qemuarmv5 = "arm/versatile-pb.dtb" + +COMPATIBLE_MACHINE = "^(qemuarm|qemuarmv5|qemuarm64|qemux86|qemuppc|qemuppc64|qemumips|qemumips64|qemux86-64|qemuriscv64|qemuriscv32|qemuloongarch64)$" + +# Functionality flags +KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc" +KERNEL_FEATURES:append = " ${KERNEL_EXTRA_FEATURES}" +KERNEL_FEATURES:append:qemuall=" cfg/virtio.scc features/drm-bochs/drm-bochs.scc cfg/net/mdio.scc" +KERNEL_FEATURES:append:qemux86=" cfg/sound.scc cfg/paravirt_kvm.scc" +KERNEL_FEATURES:append:qemux86-64=" cfg/sound.scc cfg/paravirt_kvm.scc" +KERNEL_FEATURES:append = " ${@bb.utils.contains("TUNE_FEATURES", "mx32", " cfg/x32.scc", "", d)}" +KERNEL_FEATURES:append = " ${@bb.utils.contains("DISTRO_FEATURES", "ptest", " features/scsi/scsi-debug.scc features/nf_tables/nft_test.scc", "", d)}" +KERNEL_FEATURES:append = " ${@bb.utils.contains("DISTRO_FEATURES", "ptest", " features/gpio/mockup.scc features/gpio/sim.scc", "", d)}" +KERNEL_FEATURES:append:powerpc =" arch/powerpc/powerpc-debug.scc" +KERNEL_FEATURES:append:powerpc64 =" arch/powerpc/powerpc-debug.scc" +KERNEL_FEATURES:append:powerpc64le =" arch/powerpc/powerpc-debug.scc" + +INSANE_SKIP:kernel-vmlinux:qemuppc64 = "textrel" + diff --git a/meta/recipes-kernel/lttng/babeltrace/run-ptest b/meta/recipes-kernel/lttng/babeltrace/run-ptest new file mode 100755 index 0000000000..f4b7ce11e2 --- /dev/null +++ b/meta/recipes-kernel/lttng/babeltrace/run-ptest @@ -0,0 +1,9 @@ +#!/bin/sh +# use target=recheck if you want to recheck failing tests +[ "$target" = "" ] && target=check + +# Without --ignore-exit, the tap harness causes any FAILs within a +# test plan to raise ERRORs; this is just noise. +makeargs="LOG_DRIVER_FLAGS=--ignore-exit top_srcdir=$PWD top_builddir=$PWD" + +exec make -C tests -k -s $makeargs $target 2>/dev/null diff --git a/meta/recipes-kernel/lttng/babeltrace2/0001-Make-manpages-multilib-identical.patch b/meta/recipes-kernel/lttng/babeltrace2/0001-Make-manpages-multilib-identical.patch new file mode 100644 index 0000000000..2401b176e6 --- /dev/null +++ b/meta/recipes-kernel/lttng/babeltrace2/0001-Make-manpages-multilib-identical.patch @@ -0,0 +1,28 @@ +From 56986190e4b0c10945ce6aaa7ca10d6bd8a26a39 Mon Sep 17 00:00:00 2001 +From: Jeremy Puhlman <jpuhlman@mvista.com> +Date: Mon, 9 Mar 2020 21:10:35 +0000 +Subject: [PATCH] Make manpages multilib identical + +Upstream-Status: Pending +Signed-off-by: Jeremy Puhlman <jpuhlman@mvista.com> +--- + doc/man/asciidoc-attrs.conf.in | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/doc/man/asciidoc-attrs.conf.in b/doc/man/asciidoc-attrs.conf.in +index ad1183f1..e11c7031 100644 +--- a/doc/man/asciidoc-attrs.conf.in ++++ b/doc/man/asciidoc-attrs.conf.in +@@ -1,7 +1,7 @@ + [attributes] + # default values +-system_plugin_path="@LIBDIR@/babeltrace2/plugins" +-system_plugin_provider_path="@LIBDIR@/babeltrace2/plugin-providers" ++system_plugin_path="@prefix@/lib*/babeltrace2/plugins" ++system_plugin_provider_path="@prefix@/lib*/babeltrace2/plugin-providers" + babeltrace_version="@PACKAGE_VERSION@" + enable_debug_info="@ENABLE_DEBUG_INFO_VAL@" + defrdport=5344 +-- +2.24.1 + diff --git a/meta/recipes-kernel/lttng/babeltrace2/0001-tests-do-not-run-test-applications-from-.libs.patch b/meta/recipes-kernel/lttng/babeltrace2/0001-tests-do-not-run-test-applications-from-.libs.patch new file mode 100644 index 0000000000..805dde8064 --- /dev/null +++ b/meta/recipes-kernel/lttng/babeltrace2/0001-tests-do-not-run-test-applications-from-.libs.patch @@ -0,0 +1,28 @@ +From 582713cc9a013481eeef253195d644020f637ec4 Mon Sep 17 00:00:00 2001 +Message-Id: <582713cc9a013481eeef253195d644020f637ec4.1583403622.git.wallinux@gmail.com> +From: Anders Wallin <wallinux@gmail.com> +Date: Thu, 5 Mar 2020 11:20:04 +0100 +Subject: [PATCH] tests: do not run test applications from .libs + +Cross compile specific change + +Upstream-Status: Inappropriate [oe-core specific] + +Signed-off-by: Anders Wallin <wallinux@gmail.com> +--- + tests/lib/test_plugin | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tests/lib/test_plugin b/tests/lib/test_plugin +index 652c90cc..1f817c50 100755 +--- a/tests/lib/test_plugin ++++ b/tests/lib/test_plugin +@@ -26,4 +26,4 @@ fi + # shellcheck source=../utils/utils.sh + source "$UTILSSH" + +-"${BT_TESTS_BUILDDIR}/lib/plugin" "${BT_TESTS_BUILDDIR}/lib/test-plugin-plugins/.libs" ++"${BT_TESTS_BUILDDIR}/lib/plugin" "${BT_TESTS_BUILDDIR}/lib/test-plugin-plugins" +-- +2.25.1 + diff --git a/meta/recipes-kernel/lttng/babeltrace2/run-ptest b/meta/recipes-kernel/lttng/babeltrace2/run-ptest new file mode 100755 index 0000000000..71a9c81bfb --- /dev/null +++ b/meta/recipes-kernel/lttng/babeltrace2/run-ptest @@ -0,0 +1,19 @@ +#!/bin/sh +# use target=recheck if you want to recheck failing tests +[ "$target" = "" ] && target=check + +# Without --ignore-exit, the tap harness causes any FAILs within a +# test plan to raise ERRORs; this is just noise. +makeargs="LOG_DRIVER_FLAGS=--ignore-exit abs_top_srcdir=$PWD abs_top_builddir=$PWD GREP=grep SED=sed PYTHON=python3" + +exec 2> error.log +make -C tests -k -s $makeargs $target +exitcode=$? +if [ -e error.log ]; then + cat error.log +fi +if [ -e tests/test-suite.log ]; then + cat tests/test-suite.log +fi + +exit $exitcode
\ No newline at end of file diff --git a/meta/recipes-kernel/lttng/babeltrace2_2.0.6.bb b/meta/recipes-kernel/lttng/babeltrace2_2.0.6.bb new file mode 100644 index 0000000000..d6c75d7580 --- /dev/null +++ b/meta/recipes-kernel/lttng/babeltrace2_2.0.6.bb @@ -0,0 +1,95 @@ +SUMMARY = "Babeltrace2 - Trace Format Babel Tower" +DESCRIPTION = "Babeltrace provides trace read and write libraries in host side, as well as a trace converter, which used to convert LTTng 2.0 traces into human-readable log." +HOMEPAGE = "http://babeltrace.org/" +BUGTRACKER = "https://bugs.lttng.org/projects/babeltrace" +LICENSE = "MIT & GPL-2.0-only & LGPL-2.1-only & BSD-2-Clause" +LIC_FILES_CHKSUM = "file://LICENSE;md5=a6a458c13f18385b7bc5069a6d7b176e" + +DEPENDS = "glib-2.0 util-linux popt bison-native flex-native" + +SRC_URI = "git://git.efficios.com/babeltrace.git;branch=stable-2.0;protocol=https \ + file://run-ptest \ + file://0001-tests-do-not-run-test-applications-from-.libs.patch \ + file://0001-Make-manpages-multilib-identical.patch \ + " +SRCREV = "0a6632f77801f3218a288604c646f8a39cb0d2c4" +UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>2(\.\d+)+)$" + +S = "${WORKDIR}/git" + +inherit autotools pkgconfig ptest python3targetconfig + +EXTRA_OECONF = "--disable-debug-info --disable-Werror" + +PACKAGECONFIG ??= "manpages" +PACKAGECONFIG[manpages] = ", --disable-man-pages, asciidoc-native xmlto-native" + +FILES:${PN}-staticdev += "${libdir}/babeltrace2/plugins/*.a" +FILES:${PN} += "${libdir}/babeltrace2/plugins/*.so" + +ASNEEDED = "" +LDFLAGS:append = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld ptest', ' -fuse-ld=bfd ', '', d)}" + +# coreutils since we need full mktemp +RDEPENDS:${PN}-ptest += "bash gawk python3 make grep coreutils findutils" + +do_compile_ptest () { + make -C tests all +} + +do_install_ptest () { + install -d "${D}${PTEST_PATH}/tests" + + # Copy required files from source directory + for d in $(find "${S}/tests" -type d -printf '%P ') ; do + install -d "${D}${PTEST_PATH}/tests/$d" + find "${S}/tests/$d" -maxdepth 1 -executable -type f \ + -exec install -t "${D}${PTEST_PATH}/tests/$d" {} + + find "${S}/tests/$d" -maxdepth 1 -name *.sh \ + -exec install -t "${D}${PTEST_PATH}/tests/$d" {} \; + find "${S}/tests/$d" -maxdepth 1 -name *.py \ + -exec install -t "${D}${PTEST_PATH}/tests/$d" {} \; + find "${S}/tests/$d" -maxdepth 1 -name *.expect \ + -exec install -t "${D}${PTEST_PATH}/tests/$d" {} \; + done + install -d "${D}${PTEST_PATH}/tests/data/ctf-traces/" + cp -a ${S}/tests/data/ctf-traces/* ${D}${PTEST_PATH}/tests/data/ctf-traces/ + + # Copy the tests directory tree and the executables and + # Makefiles found within. + install -D "${B}/tests/Makefile" "${D}${PTEST_PATH}/tests/" + for d in $(find "${B}/tests" -type d -not -name .libs -printf '%P ') ; do + install -d "${D}${PTEST_PATH}/tests/$d" + find "${B}/tests/$d" -maxdepth 1 -executable -type f \ + -exec install -t "${D}${PTEST_PATH}/tests/$d" {} + + test -r "${B}/tests/$d/Makefile" && \ + install -t "${D}${PTEST_PATH}/tests/$d" "${B}/tests/$d/Makefile" + find "${B}/tests/$d" -maxdepth 1 -name *.sh \ + -exec install -t "${D}${PTEST_PATH}/tests/$d" {} \; + done + + for d in $(find "${B}/tests" -type d -name .libs -printf '%P ') ; do + for f in $(find "${B}/tests/$d" -maxdepth 1 -executable -type f -printf '%P ') ; do + cp ${B}/tests/$d/$f ${D}${PTEST_PATH}/tests/`dirname $d`/$f + done + done + + # Prevent attempts to update Makefiles during test runs, and + # silence "Making check in $SUBDIR" messages. + find "${D}${PTEST_PATH}" -name Makefile -type f -exec \ + sed -i \ + -e '/Makefile:/,/^$/d' \ + -e '/%: %.in/,/^$/d' \ + -e '/echo "Making $$target in $$subdir"; \\/d' \ + -e 's/^srcdir = \(.*\)/srcdir = ./' \ + -e 's/^builddir = \(.*\)/builddir = ./' \ + -e 's/^all-am:.*/all-am:/' \ + {} + + + # Substitute links to installed binaries. + install -d "${D}${PTEST_PATH}/src/cli/" + ln -s "${bindir}/babeltrace2" ${D}${PTEST_PATH}/src/cli/ + + # Remove architechture specific testfiles + rm -rf ${D}${PTEST_PATH}/tests/data/plugins/flt.lttng-utils.debug-info/* +} diff --git a/meta/recipes-kernel/lttng/babeltrace_1.5.11.bb b/meta/recipes-kernel/lttng/babeltrace_1.5.11.bb new file mode 100644 index 0000000000..f4d9b5e42a --- /dev/null +++ b/meta/recipes-kernel/lttng/babeltrace_1.5.11.bb @@ -0,0 +1,98 @@ +SUMMARY = "Babeltrace - Trace Format Babel Tower" +DESCRIPTION = "Babeltrace provides trace read and write libraries in host side, as well as a trace converter, which used to convert LTTng 2.0 traces into human-readable log." +HOMEPAGE = "http://babeltrace.org/" +BUGTRACKER = "https://bugs.lttng.org/projects/babeltrace" +LICENSE = "MIT & GPL-2.0-only & LGPL-2.1-only" +LIC_FILES_CHKSUM = "file://LICENSE;md5=76ba15dd76a248e1dd526bca0e2125fa" + +DEPENDS = "glib-2.0 util-linux popt bison-native flex-native" + +SRC_URI = "git://git.efficios.com/babeltrace.git;branch=stable-1.5;protocol=https \ + file://run-ptest \ + " +SRCREV = "91c00f70884887ff5c4849a8e3d47e311a22ba9d" +UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>1(\.\d+)+)$" + +S = "${WORKDIR}/git" + +inherit autotools pkgconfig ptest + +EXTRA_OECONF = "--disable-debug-info" + +ASNEEDED = "" + +RDEPENDS:${PN}-ptest += "bash gawk make" + +addtask do_patch_ptest_path after do_patch before do_configure +do_patch_ptest_path () { + for f in $(grep -l -r abs_top_srcdir ${S}/tests); do + sed -i 's:\@abs_top_srcdir\@:${PTEST_PATH}:' ${f} + done + + for f in $(grep -l -r abs_top_builddir ${S}/tests); do + sed -i 's:\@abs_top_builddir\@:${PTEST_PATH}:' ${f} + done + for f in $(grep -l -r GREP ${S}/tests); do + sed -i 's:\@GREP\@:grep:' ${f} + done + + for f in $(grep -l -r SED ${S}/tests); do + sed -i 's:\@SED\@:sed:' ${f} + done +} + +do_compile_ptest () { + make -C tests all +} + +do_install_ptest () { + # Copy required files from source directory + for f in config/tap-driver.sh config/test-driver; do + install -D "${S}/$f" "${D}${PTEST_PATH}/$f" + done + install -d "$f" "${D}${PTEST_PATH}/tests/ctf-traces/" + cp -a ${S}/tests/ctf-traces/* ${D}${PTEST_PATH}/tests/ctf-traces/ + + # Copy the tests directory tree and the executables and + # Makefiles found within. + install -D "${B}/tests/Makefile" "${D}${PTEST_PATH}/tests/" + for d in $(find "${B}/tests" -type d -not -name .libs -printf '%P ') ; do + install -d "${D}${PTEST_PATH}/tests/$d" + find "${B}/tests/$d" -maxdepth 1 -executable -type f \ + -exec install -t "${D}${PTEST_PATH}/tests/$d" {} + + test -r "${B}/tests/$d/Makefile" && \ + install -t "${D}${PTEST_PATH}/tests/$d" "${B}/tests/$d/Makefile" + find "${B}/tests/$d" -maxdepth 1 -name *.sh \ + -exec install -t "${D}${PTEST_PATH}/tests/$d" {} \; + done + + for d in $(find "${B}/tests" -type d -name .libs -printf '%P ') ; do + for f in $(find "${B}/tests/$d" -maxdepth 1 -executable -type f -printf '%P ') ; do + cp ${B}/tests/$d/$f ${D}${PTEST_PATH}/tests/`dirname $d`/$f + done + done + + install -D ${B}/formats/ctf/metadata/.libs/ctf-parser-test \ + ${D}${PTEST_PATH}/formats/ctf/metadata/ctf-parser-test + + # Prevent attempts to update Makefiles during test runs, and + # silence "Making check in $SUBDIR" messages. + find "${D}${PTEST_PATH}" -name Makefile -type f -exec \ + sed -i \ + -e '/Makefile:/,/^$/d' \ + -e '/$(check_SCRIPTS)/s/^/#/' \ + -e '/%: %.in/,/^$/d' \ + -e '/echo "Making $$target in $$subdir"; \\/d' \ + -e 's/^srcdir = \(.*\)/srcdir = ./' \ + -e 's/^builddir = \(.*\)/builddir = ./' \ + -e 's/^all-am:.*/all-am:/' \ + {} + + + # Remove path to babeltrace. + for f in $(grep -l -r "^BABELTRACE_BIN" ${D}${PTEST_PATH}); do + sed -i 's:^BABELTRACE_BIN.*:BABELTRACE_BIN=/usr/bin/babeltrace:' ${f} + done + for f in $(grep -l -r "^BTBIN" ${D}${PTEST_PATH}); do + sed -i 's:^BTBIN.*:BTBIN=/usr/bin/babeltrace:' ${f} + done +} diff --git a/meta/recipes-kernel/lttng/babeltrace_1.5.6.bb b/meta/recipes-kernel/lttng/babeltrace_1.5.6.bb deleted file mode 100644 index f5c31c4463..0000000000 --- a/meta/recipes-kernel/lttng/babeltrace_1.5.6.bb +++ /dev/null @@ -1,20 +0,0 @@ -SUMMARY = "Babeltrace - Trace Format Babel Tower" -DESCRIPTION = "Babeltrace provides trace read and write libraries in host side, as well as a trace converter, which used to convert LTTng 2.0 traces into human-readable log." -HOMEPAGE = "http://www.efficios.com/babeltrace/" -BUGTRACKER = "https://bugs.lttng.org/projects/babeltrace" -LICENSE = "MIT & GPLv2" -LIC_FILES_CHKSUM = "file://LICENSE;md5=76ba15dd76a248e1dd526bca0e2125fa" - -DEPENDS = "glib-2.0 util-linux popt bison-native flex-native" - -SRC_URI = "git://git.linuxfoundation.org/diamon/babeltrace.git;branch=stable-1.5" -SRCREV = "4f10a4adabee5ca61c27ba399b3438505e0cd6de" -UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+(\.\d+)+)$" - -S = "${WORKDIR}/git" - -inherit autotools pkgconfig - -EXTRA_OECONF = "--disable-debug-info" - -ASNEEDED = "" diff --git a/meta/recipes-kernel/lttng/lttng-modules/0001-Fix-ASoC-snd_doc_dapm-on-linux-6.9-rc1.patch b/meta/recipes-kernel/lttng/lttng-modules/0001-Fix-ASoC-snd_doc_dapm-on-linux-6.9-rc1.patch new file mode 100644 index 0000000000..9d5fd0de60 --- /dev/null +++ b/meta/recipes-kernel/lttng/lttng-modules/0001-Fix-ASoC-snd_doc_dapm-on-linux-6.9-rc1.patch @@ -0,0 +1,93 @@ +From fec007d9630e010062cf5699a08460f71f46b527 Mon Sep 17 00:00:00 2001 +From: Kienan Stewart <kstewart@efficios.com> +Date: Mon, 25 Mar 2024 08:54:42 -0400 +Subject: [PATCH 1/4] Fix: ASoC snd_doc_dapm on linux 6.9-rc1 + +See upstream commit: + + commit 7df3eb4cdb6bbfa482f51548b9fd47c2723c68ba + Author: Luca Ceresoli <luca.ceresoli@bootlin.com> + Date: Wed Mar 6 10:30:01 2024 +0100 + + ASoC: trace: add event to snd_soc_dapm trace events + + Add the event value to the snd_soc_dapm_start and snd_soc_dapm_done trace + events to make them more informative. + + Trace before: + + aplay-229 [000] 250.140309: snd_soc_dapm_start: card=vscn-2046 + aplay-229 [000] 250.167531: snd_soc_dapm_done: card=vscn-2046 + aplay-229 [000] 251.169588: snd_soc_dapm_start: card=vscn-2046 + aplay-229 [000] 251.195245: snd_soc_dapm_done: card=vscn-2046 + + Trace after: + + aplay-214 [000] 693.290612: snd_soc_dapm_start: card=vscn-2046 event=1 + aplay-214 [000] 693.315508: snd_soc_dapm_done: card=vscn-2046 event=1 + aplay-214 [000] 694.537349: snd_soc_dapm_start: card=vscn-2046 event=2 + aplay-214 [000] 694.563241: snd_soc_dapm_done: card=vscn-2046 event=2 + +Upstream-Status: Backport [88c4e0fe Fix: ASoC snd_doc_dapm on linux 6.9-rc1] + +Change-Id: If0d33544b8dd1dfb3d12ca9390892190fc0444b0 +Signed-off-by: Kienan Stewart <kstewart@efficios.com> +Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> +--- + include/instrumentation/events/asoc.h | 33 +++++++++++++++++++++++++++ + 1 file changed, 33 insertions(+) + +diff --git a/include/instrumentation/events/asoc.h b/include/instrumentation/events/asoc.h +index 21d13a0f..5126d4c1 100644 +--- a/include/instrumentation/events/asoc.h ++++ b/include/instrumentation/events/asoc.h +@@ -51,6 +51,38 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(asoc_snd_soc_card, snd_soc_bias_level_done, + + ) + ++#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,9,0)) ++LTTNG_TRACEPOINT_EVENT_CLASS(asoc_snd_soc_dapm_basic, ++ ++ TP_PROTO(struct snd_soc_card *card, int event), ++ ++ TP_ARGS(card, event), ++ ++ TP_FIELDS( ++ ctf_string(name, card->name) ++ ctf_integer(int, event, event) ++ ) ++) ++LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(asoc_snd_soc_dapm_basic, snd_soc_dapm_start, ++ ++ asoc_snd_soc_dapm_start, ++ ++ TP_PROTO(struct snd_soc_card *card, int event), ++ ++ TP_ARGS(card, event) ++ ++) ++ ++LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(asoc_snd_soc_dapm_basic, snd_soc_dapm_done, ++ ++ asoc_snd_soc_dapm_done, ++ ++ TP_PROTO(struct snd_soc_card *card, int event), ++ ++ TP_ARGS(card, event) ++ ++) ++#else + LTTNG_TRACEPOINT_EVENT_CLASS(asoc_snd_soc_dapm_basic, + + TP_PROTO(struct snd_soc_card *card), +@@ -81,6 +113,7 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(asoc_snd_soc_dapm_basic, snd_soc_dapm_done, + TP_ARGS(card) + + ) ++#endif + + LTTNG_TRACEPOINT_EVENT_CLASS(asoc_snd_soc_dapm_widget, + +-- +2.39.2 + diff --git a/meta/recipes-kernel/lttng/lttng-modules/0001-Fix-signal-Distinguish-between-kernel_siginfo-and-si.patch b/meta/recipes-kernel/lttng/lttng-modules/0001-Fix-signal-Distinguish-between-kernel_siginfo-and-si.patch deleted file mode 100644 index 351184dabb..0000000000 --- a/meta/recipes-kernel/lttng/lttng-modules/0001-Fix-signal-Distinguish-between-kernel_siginfo-and-si.patch +++ /dev/null @@ -1,133 +0,0 @@ -From 0a0d736ec89dffdbc83e7181166a99d5563acfe8 Mon Sep 17 00:00:00 2001 -From: Michael Jeanson <mjeanson@efficios.com> -Date: Mon, 5 Nov 2018 11:35:52 -0500 -Subject: [PATCH 1/9] Fix: signal: Distinguish between kernel_siginfo and - siginfo (v4.20) - -See upstream commit : - - commit ae7795bc6187a15ec51cf258abae656a625f9980 - Author: Eric W. Biederman <ebiederm@xmission.com> - Date: Tue Sep 25 11:27:20 2018 +0200 - - signal: Distinguish between kernel_siginfo and siginfo - - Linus recently observed that if we did not worry about the padding - member in struct siginfo it is only about 48 bytes, and 48 bytes is - much nicer than 128 bytes for allocating on the stack and copying - around in the kernel. - - The obvious thing of only adding the padding when userspace is - including siginfo.h won't work as there are sigframe definitions in - the kernel that embed struct siginfo. - - So split siginfo in two; kernel_siginfo and siginfo. Keeping the - traditional name for the userspace definition. While the version that - is used internally to the kernel and ultimately will not be padded to - 128 bytes is called kernel_siginfo. - - The definition of struct kernel_siginfo I have put in include/signal_types.h - - A set of buildtime checks has been added to verify the two structures have - the same field offsets. - - To make it easy to verify the change kernel_siginfo retains the same - size as siginfo. The reduction in size comes in a following change. - -Signed-off-by: Michael Jeanson <mjeanson@efficios.com> -Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> - -Upstream-Status: backport https://github.com/lttng/lttng-modules/commit/0a0d736ec89dffdbc83e7181166a99d5563acfe8 - -Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com> ---- - instrumentation/events/lttng-module/signal.h | 41 ++++++++++++++++++-- - 1 file changed, 37 insertions(+), 4 deletions(-) - -diff --git a/instrumentation/events/lttng-module/signal.h b/instrumentation/events/lttng-module/signal.h -index b3c9126..8783b52 100644 ---- a/instrumentation/events/lttng-module/signal.h -+++ b/instrumentation/events/lttng-module/signal.h -@@ -35,21 +35,24 @@ - * SEND_SIG_NOINFO means that si_code is SI_USER, and SEND_SIG_PRIV - * means that si_code is SI_KERNEL. - */ --#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,4,0)) -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,20,0)) - LTTNG_TRACEPOINT_EVENT(signal_generate, - -- TP_PROTO(int sig, struct siginfo *info, struct task_struct *task), -+ TP_PROTO(int sig, struct kernel_siginfo *info, struct task_struct *task, -+ int group, int result), - -- TP_ARGS(sig, info, task), -+ TP_ARGS(sig, info, task, group, result), - - TP_FIELDS( - ctf_integer(int, sig, sig) - LTTNG_FIELDS_SIGINFO(info) - ctf_array_text(char, comm, task->comm, TASK_COMM_LEN) - ctf_integer(pid_t, pid, task->pid) -+ ctf_integer(int, group, group) -+ ctf_integer(int, result, result) - ) - ) --#else -+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0)) - LTTNG_TRACEPOINT_EVENT(signal_generate, - - TP_PROTO(int sig, struct siginfo *info, struct task_struct *task, -@@ -66,6 +69,20 @@ LTTNG_TRACEPOINT_EVENT(signal_generate, - ctf_integer(int, result, result) - ) - ) -+#else -+LTTNG_TRACEPOINT_EVENT(signal_generate, -+ -+ TP_PROTO(int sig, struct siginfo *info, struct task_struct *task), -+ -+ TP_ARGS(sig, info, task), -+ -+ TP_FIELDS( -+ ctf_integer(int, sig, sig) -+ LTTNG_FIELDS_SIGINFO(info) -+ ctf_array_text(char, comm, task->comm, TASK_COMM_LEN) -+ ctf_integer(pid_t, pid, task->pid) -+ ) -+) - #endif - - /** -@@ -82,6 +99,21 @@ LTTNG_TRACEPOINT_EVENT(signal_generate, - * This means, this can show which signals are actually delivered, but - * matching generated signals and delivered signals may not be correct. - */ -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,20,0)) -+LTTNG_TRACEPOINT_EVENT(signal_deliver, -+ -+ TP_PROTO(int sig, struct kernel_siginfo *info, struct k_sigaction *ka), -+ -+ TP_ARGS(sig, info, ka), -+ -+ TP_FIELDS( -+ ctf_integer(int, sig, sig) -+ LTTNG_FIELDS_SIGINFO(info) -+ ctf_integer(unsigned long, sa_handler, (unsigned long) ka->sa.sa_handler) -+ ctf_integer(unsigned long, sa_flags, ka->sa.sa_flags) -+ ) -+) -+#else - LTTNG_TRACEPOINT_EVENT(signal_deliver, - - TP_PROTO(int sig, struct siginfo *info, struct k_sigaction *ka), -@@ -95,6 +127,7 @@ LTTNG_TRACEPOINT_EVENT(signal_deliver, - ctf_integer(unsigned long, sa_flags, ka->sa.sa_flags) - ) - ) -+#endif - - #if (LINUX_VERSION_CODE < KERNEL_VERSION(3,4,0)) - LTTNG_TRACEPOINT_EVENT_CLASS(signal_queue_overflow, --- -2.19.1 - diff --git a/meta/recipes-kernel/lttng/lttng-modules/0001-src-Kbuild-change-missing-CONFIG_TRACEPOINTS-to-warn.patch b/meta/recipes-kernel/lttng/lttng-modules/0001-src-Kbuild-change-missing-CONFIG_TRACEPOINTS-to-warn.patch new file mode 100644 index 0000000000..120528bf9c --- /dev/null +++ b/meta/recipes-kernel/lttng/lttng-modules/0001-src-Kbuild-change-missing-CONFIG_TRACEPOINTS-to-warn.patch @@ -0,0 +1,46 @@ +From 878f89b6136ff7b870a19e04901cc6f316bbe10a Mon Sep 17 00:00:00 2001 +From: Bruce Ashfield <bruce.ashfield@gmail.com> +Date: Sat, 15 May 2021 10:26:38 -0400 +Subject: [PATCH] src/Kbuild: change missing CONFIG_TRACEPOINTS to warning + +Taken from a previous patch to the main lttng-modules Makefile, by +Otavio Salvador: + + The lttng-modules are being pulled by the tools-profile image feature, + however, not every kernel has the CONFIG_TRACEPOINTS feature enabled. + + This change makes the build do not fail when CONFIG_TRACEPOINTS is not + available, allowing it to be kept being pulled by default. + +Upstream-Status: Inappropriate [embedded specific] + +Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com> +--- + src/Kbuild | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +Index: lttng-modules-2.13.10/src/Kbuild +=================================================================== +--- lttng-modules-2.13.10.orig/src/Kbuild ++++ lttng-modules-2.13.10/src/Kbuild +@@ -2,10 +2,13 @@ + + ifdef CONFIG_LOCALVERSION # Check if dot-config is included. + ifeq ($(CONFIG_TRACEPOINTS),) +- $(error The option CONFIG_TRACEPOINTS needs to be enabled in your kernel configuration) ++ $(warning The option CONFIG_TRACEPOINTS needs to be enabled in your kernel configuration) ++ DISABLE_MODULE = y + endif # CONFIG_TRACEPOINTS + endif # ifdef CONFIG_LOCALVERSION + ++ifneq ($(DISABLE_MODULE),y) ++ + TOP_LTTNG_MODULES_DIR := $(shell dirname $(lastword $(MAKEFILE_LIST)))/.. + + lttng_check_linux_version = $(shell pwd)/include/linux/version.h +@@ -150,3 +153,5 @@ lttng-statedump-objs := lttng-statedump- + obj-$(CONFIG_LTTNG) += probes/ + obj-$(CONFIG_LTTNG) += lib/ + obj-$(CONFIG_LTTNG) += tests/ ++ ++endif # DISABLE_MODULE diff --git a/meta/recipes-kernel/lttng/lttng-modules/0002-Fix-ASoC-add-component-to-set_bias_level-events-in-l.patch b/meta/recipes-kernel/lttng/lttng-modules/0002-Fix-ASoC-add-component-to-set_bias_level-events-in-l.patch new file mode 100644 index 0000000000..6ea10ffc91 --- /dev/null +++ b/meta/recipes-kernel/lttng/lttng-modules/0002-Fix-ASoC-add-component-to-set_bias_level-events-in-l.patch @@ -0,0 +1,132 @@ +From d8379ec6365a925db33cae94fb6783cdbdb6a922 Mon Sep 17 00:00:00 2001 +From: Kienan Stewart <kstewart@efficios.com> +Date: Mon, 25 Mar 2024 09:40:29 -0400 +Subject: [PATCH 2/4] Fix: ASoC add component to set_bias_level events in linux + 6.9-rc1 + +See upstream commit: + + commit 6ef46a69ec32fe1cf56de67742fcd01af4bf48af + Author: Luca Ceresoli <luca.ceresoli@bootlin.com> + Date: Wed Mar 6 10:30:00 2024 +0100 + + ASoC: trace: add component to set_bias_level trace events + + The snd_soc_bias_level_start and snd_soc_bias_level_done trace events + currently look like: + + aplay-229 [000] 1250.140778: snd_soc_bias_level_start: card=vscn-2046 val=1 + aplay-229 [000] 1250.140784: snd_soc_bias_level_done: card=vscn-2046 val=1 + aplay-229 [000] 1250.140786: snd_soc_bias_level_start: card=vscn-2046 val=2 + aplay-229 [000] 1250.140788: snd_soc_bias_level_done: card=vscn-2046 val=2 + kworker/u8:1-21 [000] 1250.140871: snd_soc_bias_level_start: card=vscn-2046 val=1 + kworker/u8:0-11 [000] 1250.140951: snd_soc_bias_level_start: card=vscn-2046 val=1 + kworker/u8:0-11 [000] 1250.140956: snd_soc_bias_level_done: card=vscn-2046 val=1 + kworker/u8:0-11 [000] 1250.140959: snd_soc_bias_level_start: card=vscn-2046 val=2 + kworker/u8:0-11 [000] 1250.140961: snd_soc_bias_level_done: card=vscn-2046 val=2 + kworker/u8:1-21 [000] 1250.167219: snd_soc_bias_level_done: card=vscn-2046 val=1 + kworker/u8:1-21 [000] 1250.167222: snd_soc_bias_level_start: card=vscn-2046 val=2 + kworker/u8:1-21 [000] 1250.167232: snd_soc_bias_level_done: card=vscn-2046 val=2 + kworker/u8:0-11 [000] 1250.167440: snd_soc_bias_level_start: card=vscn-2046 val=3 + kworker/u8:0-11 [000] 1250.167444: snd_soc_bias_level_done: card=vscn-2046 val=3 + kworker/u8:1-21 [000] 1250.167497: snd_soc_bias_level_start: card=vscn-2046 val=3 + kworker/u8:1-21 [000] 1250.167506: snd_soc_bias_level_done: card=vscn-2046 val=3 + + There are clearly multiple calls, one per component, but they cannot be + discriminated from each other. + + Change the ftrace events to also print the component name, to make it clear + which part of the code is involved. This requires changing the passed value + from a struct snd_soc_card, where the DAPM context is not kwown, to a + struct snd_soc_dapm_context where it is obviously known but the a card + pointer is also available. + + With this change, the resulting trace becomes: + + aplay-247 [000] 1436.357332: snd_soc_bias_level_start: card=vscn-2046 component=(none) val=1 + aplay-247 [000] 1436.357338: snd_soc_bias_level_done: card=vscn-2046 component=(none) val=1 + aplay-247 [000] 1436.357340: snd_soc_bias_level_start: card=vscn-2046 component=(none) val=2 + aplay-247 [000] 1436.357343: snd_soc_bias_level_done: card=vscn-2046 component=(none) val=2 + kworker/u8:4-215 [000] 1436.357437: snd_soc_bias_level_start: card=vscn-2046 component=ff560000.codec val=1 + kworker/u8:5-231 [000] 1436.357518: snd_soc_bias_level_start: card=vscn-2046 component=ff320000.i2s val=1 + kworker/u8:5-231 [000] 1436.357523: snd_soc_bias_level_done: card=vscn-2046 component=ff320000.i2s val=1 + kworker/u8:5-231 [000] 1436.357526: snd_soc_bias_level_start: card=vscn-2046 component=ff320000.i2s val=2 + kworker/u8:5-231 [000] 1436.357528: snd_soc_bias_level_done: card=vscn-2046 component=ff320000.i2s val=2 + kworker/u8:4-215 [000] 1436.383217: snd_soc_bias_level_done: card=vscn-2046 component=ff560000.codec val=1 + kworker/u8:4-215 [000] 1436.383221: snd_soc_bias_level_start: card=vscn-2046 component=ff560000.codec val=2 + kworker/u8:4-215 [000] 1436.383231: snd_soc_bias_level_done: card=vscn-2046 component=ff560000.codec val=2 + kworker/u8:5-231 [000] 1436.383468: snd_soc_bias_level_start: card=vscn-2046 component=ff320000.i2s val=3 + kworker/u8:5-231 [000] 1436.383472: snd_soc_bias_level_done: card=vscn-2046 component=ff320000.i2s val=3 + kworker/u8:4-215 [000] 1436.383503: snd_soc_bias_level_start: card=vscn-2046 component=ff560000.codec val=3 + kworker/u8:4-215 [000] 1436.383513: snd_soc_bias_level_done: card=vscn-2046 component=ff560000.codec val=3 + +Upstream-Status: Backport [303434ab Fix: ASoC add component to set_bias_level events in linux 6.9-rc1] + +Change-Id: I959f1680c002acdf29828b968d3975247f5433d8 +Signed-off-by: Kienan Stewart <kstewart@efficios.com> +Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> +--- + include/instrumentation/events/asoc.h | 36 +++++++++++++++++++++++++++ + 1 file changed, 36 insertions(+) + +Index: lttng-modules-2.13.12/include/instrumentation/events/asoc.h +=================================================================== +--- lttng-modules-2.13.12.orig/include/instrumentation/events/asoc.h ++++ lttng-modules-2.13.12/include/instrumentation/events/asoc.h +@@ -10,6 +10,7 @@ + #include <lttng/kernel-version.h> + + #define DAPM_DIRECT "(direct)" ++#define DAPM_COMPONENT_NONE "(none)" + + #ifndef _TRACE_ASOC_DEF + #define _TRACE_ASOC_DEF +@@ -119,6 +120,40 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(asoc + ) + #endif + ++#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,9,0)) ++LTTNG_TRACEPOINT_EVENT_CLASS(asoc_snd_soc_dapm_context, ++ ++ TP_PROTO(struct snd_soc_dapm_context *dapm, int val), ++ ++ TP_ARGS(dapm, val), ++ ++ TP_FIELDS( ++ ctf_string(name, dapm->card->name) ++ ctf_string(component, dapm->component ? dapm->component->name : DAPM_COMPONENT_NONE) ++ ctf_integer(int, val, val) ++ ) ++) ++ ++LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(asoc_snd_soc_dapm_context, snd_soc_bias_level_start, ++ ++ asoc_snd_soc_bias_level_start, ++ ++ TP_PROTO(struct snd_soc_dapm_context *dapm, int val), ++ ++ TP_ARGS(dapm, val) ++ ++) ++ ++LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(asoc_snd_soc_dapm_context, snd_soc_bias_level_done, ++ ++ asoc_snd_soc_bias_level_done, ++ ++ TP_PROTO(struct snd_soc_dapm_context *dapm, int val), ++ ++ TP_ARGS(dapm, val) ++ ++) ++#else + LTTNG_TRACEPOINT_EVENT_CLASS(asoc_snd_soc_card, + + TP_PROTO(struct snd_soc_card *card, int val), +@@ -150,6 +185,7 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(asoc + TP_ARGS(card, val) + + ) ++#endif + + #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,9,0)) + LTTNG_TRACEPOINT_EVENT_CLASS(asoc_snd_soc_dapm_basic, diff --git a/meta/recipes-kernel/lttng/lttng-modules/0002-Fix-signal-Remove-SEND_SIG_FORCED-v4.20.patch b/meta/recipes-kernel/lttng/lttng-modules/0002-Fix-signal-Remove-SEND_SIG_FORCED-v4.20.patch deleted file mode 100644 index 905b68165b..0000000000 --- a/meta/recipes-kernel/lttng/lttng-modules/0002-Fix-signal-Remove-SEND_SIG_FORCED-v4.20.patch +++ /dev/null @@ -1,67 +0,0 @@ -From 26bc064a4d4c85e6000393aadb38659f99b59162 Mon Sep 17 00:00:00 2001 -From: Michael Jeanson <mjeanson@efficios.com> -Date: Mon, 5 Nov 2018 11:35:53 -0500 -Subject: [PATCH 2/9] Fix: signal: Remove SEND_SIG_FORCED (v4.20) - -See upstream commit : - - commit 4ff4c31a6e85f4c49fbeebeaa28018d002884b5a - Author: Eric W. Biederman <ebiederm@xmission.com> - Date: Mon Sep 3 10:39:04 2018 +0200 - - signal: Remove SEND_SIG_FORCED - - There are no more users of SEND_SIG_FORCED so it may be safely removed. - - Remove the definition of SEND_SIG_FORCED, it's use in is_si_special, - it's use in TP_STORE_SIGINFO, and it's use in __send_signal as without - any users the uses of SEND_SIG_FORCED are now unncessary. - - This makes the code simpler, easier to understand and use. Users of - signal sending functions now no longer need to ask themselves do I - need to use SEND_SIG_FORCED. - -Signed-off-by: Michael Jeanson <mjeanson@efficios.com> -Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> - -Upstream-Status: backport https://github.com/lttng/lttng-modules/commit/26bc064a4d4c85e6000393aadb38659f99b59162 - -Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com> - ---- - instrumentation/events/lttng-module/signal.h | 12 ++++++++++++ - 1 file changed, 12 insertions(+) - -diff --git a/instrumentation/events/lttng-module/signal.h b/instrumentation/events/lttng-module/signal.h -index 8783b52..ad8fe69 100644 ---- a/instrumentation/events/lttng-module/signal.h -+++ b/instrumentation/events/lttng-module/signal.h -@@ -12,6 +12,17 @@ - #include <linux/signal.h> - #include <linux/sched.h> - #undef LTTNG_FIELDS_SIGINFO -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,20,0)) -+#define LTTNG_FIELDS_SIGINFO(info) \ -+ ctf_integer(int, errno, \ -+ (info == SEND_SIG_NOINFO || info == SEND_SIG_PRIV) ? \ -+ 0 : \ -+ info->si_errno) \ -+ ctf_integer(int, code, \ -+ (info == SEND_SIG_NOINFO) ? \ -+ SI_USER : \ -+ ((info == SEND_SIG_PRIV) ? SI_KERNEL : info->si_code)) -+#else /* LINUX_VERSION_CODE >= KERNEL_VERSION(4,20,0) */ - #define LTTNG_FIELDS_SIGINFO(info) \ - ctf_integer(int, errno, \ - (info == SEND_SIG_NOINFO || info == SEND_SIG_FORCED || info == SEND_SIG_PRIV) ? \ -@@ -21,6 +32,7 @@ - (info == SEND_SIG_NOINFO || info == SEND_SIG_FORCED) ? \ - SI_USER : \ - ((info == SEND_SIG_PRIV) ? SI_KERNEL : info->si_code)) -+#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(4,20,0) */ - #endif /* _TRACE_SIGNAL_DEF */ - - /** --- -2.19.1 - diff --git a/meta/recipes-kernel/lttng/lttng-modules/0003-Fix-ext4-adjust-reserved-cluster-count-when-removing.patch b/meta/recipes-kernel/lttng/lttng-modules/0003-Fix-ext4-adjust-reserved-cluster-count-when-removing.patch deleted file mode 100644 index 7edffee542..0000000000 --- a/meta/recipes-kernel/lttng/lttng-modules/0003-Fix-ext4-adjust-reserved-cluster-count-when-removing.patch +++ /dev/null @@ -1,149 +0,0 @@ -From cb9f1a821bcf55cecf3813195fd6d4eff8070927 Mon Sep 17 00:00:00 2001 -From: Michael Jeanson <mjeanson@efficios.com> -Date: Mon, 5 Nov 2018 11:35:54 -0500 -Subject: [PATCH 3/9] Fix: ext4: adjust reserved cluster count when removing - extents (v4.20) - -See upstream commit : - - commit 9fe671496b6c286f9033aedfc1718d67721da0ae - Author: Eric Whitney <enwlinux@gmail.com> - Date: Mon Oct 1 14:25:08 2018 -0400 - - ext4: adjust reserved cluster count when removing extents - - Modify ext4_ext_remove_space() and the code it calls to correct the - reserved cluster count for pending reservations (delayed allocated - clusters shared with allocated blocks) when a block range is removed - from the extent tree. Pending reservations may be found for the clusters - at the ends of written or unwritten extents when a block range is removed. - If a physical cluster at the end of an extent is freed, it's necessary - to increment the reserved cluster count to maintain correct accounting - if the corresponding logical cluster is shared with at least one - delayed and unwritten extent as found in the extents status tree. - - Add a new function, ext4_rereserve_cluster(), to reapply a reservation - on a delayed allocated cluster sharing blocks with a freed allocated - cluster. To avoid ENOSPC on reservation, a flag is applied to - ext4_free_blocks() to briefly defer updating the freeclusters counter - when an allocated cluster is freed. This prevents another thread - from allocating the freed block before the reservation can be reapplied. - - Redefine the partial cluster object as a struct to carry more state - information and to clarify the code using it. - - Adjust the conditional code structure in ext4_ext_remove_space to - reduce the indentation level in the main body of the code to improve - readability. - -Signed-off-by: Michael Jeanson <mjeanson@efficios.com> -Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> - -Upstream-Status: backport https://github.com/lttng/lttng-modules/commit/cb9f1a821bcf55cecf3813195fd6d4eff8070927 - -Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com> - ---- - instrumentation/events/lttng-module/ext4.h | 72 +++++++++++++++++++++- - 1 file changed, 69 insertions(+), 3 deletions(-) - -diff --git a/instrumentation/events/lttng-module/ext4.h b/instrumentation/events/lttng-module/ext4.h -index fe6f802..83a80ba 100644 ---- a/instrumentation/events/lttng-module/ext4.h -+++ b/instrumentation/events/lttng-module/ext4.h -@@ -1602,7 +1602,30 @@ LTTNG_TRACEPOINT_EVENT(ext4_ext_show_extent, - ) - ) - --#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0)) -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,20,0)) -+ -+LTTNG_TRACEPOINT_EVENT(ext4_remove_blocks, -+ TP_PROTO(struct inode *inode, struct ext4_extent *ex, -+ ext4_lblk_t from, ext4_fsblk_t to, -+ struct partial_cluster *pc), -+ -+ TP_ARGS(inode, ex, from, to, pc), -+ -+ TP_FIELDS( -+ ctf_integer(dev_t, dev, inode->i_sb->s_dev) -+ ctf_integer(ino_t, ino, inode->i_ino) -+ ctf_integer(ext4_lblk_t, from, from) -+ ctf_integer(ext4_lblk_t, to, to) -+ ctf_integer(ext4_fsblk_t, ee_pblk, ext4_ext_pblock(ex)) -+ ctf_integer(ext4_lblk_t, ee_lblk, le32_to_cpu(ex->ee_block)) -+ ctf_integer(unsigned short, ee_len, ext4_ext_get_actual_len(ex)) -+ ctf_integer(ext4_fsblk_t, pc_pclu, pc->pclu) -+ ctf_integer(ext4_lblk_t, pc_lblk, pc->lblk) -+ ctf_integer(int, pc_state, pc->state) -+ ) -+) -+ -+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0)) - - LTTNG_TRACEPOINT_EVENT(ext4_remove_blocks, - TP_PROTO(struct inode *inode, struct ext4_extent *ex, -@@ -1646,7 +1669,29 @@ LTTNG_TRACEPOINT_EVENT(ext4_remove_blocks, - - #endif - --#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0)) -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,20,0)) -+ -+LTTNG_TRACEPOINT_EVENT(ext4_ext_rm_leaf, -+ TP_PROTO(struct inode *inode, ext4_lblk_t start, -+ struct ext4_extent *ex, -+ struct partial_cluster *pc), -+ -+ TP_ARGS(inode, start, ex, pc), -+ -+ TP_FIELDS( -+ ctf_integer(dev_t, dev, inode->i_sb->s_dev) -+ ctf_integer(ino_t, ino, inode->i_ino) -+ ctf_integer(ext4_lblk_t, start, start) -+ ctf_integer(ext4_lblk_t, ee_lblk, le32_to_cpu(ex->ee_block)) -+ ctf_integer(ext4_fsblk_t, ee_pblk, ext4_ext_pblock(ex)) -+ ctf_integer(short, ee_len, ext4_ext_get_actual_len(ex)) -+ ctf_integer(ext4_fsblk_t, pc_pclu, pc->pclu) -+ ctf_integer(ext4_lblk_t, pc_lblk, pc->lblk) -+ ctf_integer(int, pc_state, pc->state) -+ ) -+) -+ -+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0)) - - LTTNG_TRACEPOINT_EVENT(ext4_ext_rm_leaf, - TP_PROTO(struct inode *inode, ext4_lblk_t start, -@@ -1733,7 +1778,28 @@ LTTNG_TRACEPOINT_EVENT(ext4_ext_remove_space, - - #endif - --#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0)) -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,20,0)) -+ -+LTTNG_TRACEPOINT_EVENT(ext4_ext_remove_space_done, -+ TP_PROTO(struct inode *inode, ext4_lblk_t start, ext4_lblk_t end, -+ int depth, struct partial_cluster *pc, __le16 eh_entries), -+ -+ TP_ARGS(inode, start, end, depth, pc, eh_entries), -+ -+ TP_FIELDS( -+ ctf_integer(dev_t, dev, inode->i_sb->s_dev) -+ ctf_integer(ino_t, ino, inode->i_ino) -+ ctf_integer(ext4_lblk_t, start, start) -+ ctf_integer(ext4_lblk_t, end, end) -+ ctf_integer(int, depth, depth) -+ ctf_integer(unsigned short, eh_entries, le16_to_cpu(eh_entries)) -+ ctf_integer(ext4_fsblk_t, pc_pclu, pc->pclu) -+ ctf_integer(ext4_lblk_t, pc_lblk, pc->lblk) -+ ctf_integer(int, pc_state, pc->state) -+ ) -+) -+ -+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0)) - - LTTNG_TRACEPOINT_EVENT(ext4_ext_remove_space_done, - TP_PROTO(struct inode *inode, ext4_lblk_t start, ext4_lblk_t end, --- -2.19.1 - diff --git a/meta/recipes-kernel/lttng/lttng-modules/0003-Fix-mm_compaction_migratepages-changed-in-linux-6.9-.patch b/meta/recipes-kernel/lttng/lttng-modules/0003-Fix-mm_compaction_migratepages-changed-in-linux-6.9-.patch new file mode 100644 index 0000000000..66c48ebe8f --- /dev/null +++ b/meta/recipes-kernel/lttng/lttng-modules/0003-Fix-mm_compaction_migratepages-changed-in-linux-6.9-.patch @@ -0,0 +1,81 @@ +From f4a6415f8d5fa447868d1fdc7119e0a328966379 Mon Sep 17 00:00:00 2001 +From: Kienan Stewart <kstewart@efficios.com> +Date: Mon, 25 Mar 2024 10:30:32 -0400 +Subject: [PATCH 3/4] Fix: mm_compaction_migratepages changed in linux 6.9-rc1 + +See upstream commit: + + commit ab755bf4249b992fc2140d615ab0a686d50765b4 + Author: Baolin Wang <baolin.wang@linux.alibaba.com> + Date: Tue Feb 20 14:16:31 2024 +0800 + + mm: compaction: update the cc->nr_migratepages when allocating or freeing the freepages + + Currently we will use 'cc->nr_freepages >= cc->nr_migratepages' comparison + to ensure that enough freepages are isolated in isolate_freepages(), + however it just decreases the cc->nr_freepages without updating + cc->nr_migratepages in compaction_alloc(), which will waste more CPU + cycles and cause too many freepages to be isolated. + + So we should also update the cc->nr_migratepages when allocating or + freeing the freepages to avoid isolating excess freepages. And I can see + fewer free pages are scanned and isolated when running thpcompact on my + Arm64 server: + + k6.7 k6.7_patched + Ops Compaction pages isolated 120692036.00 118160797.00 + Ops Compaction migrate scanned 131210329.00 154093268.00 + Ops Compaction free scanned 1090587971.00 1080632536.00 + Ops Compact scan efficiency 12.03 14.26 + + Moreover, I did not see an obvious latency improvements, this is likely + because isolating freepages is not the bottleneck in the thpcompact test + case. + + k6.7 k6.7_patched + Amean fault-both-1 1089.76 ( 0.00%) 1080.16 * 0.88%* + Amean fault-both-3 1616.48 ( 0.00%) 1636.65 * -1.25%* + Amean fault-both-5 2266.66 ( 0.00%) 2219.20 * 2.09%* + Amean fault-both-7 2909.84 ( 0.00%) 2801.90 * 3.71%* + Amean fault-both-12 4861.26 ( 0.00%) 4733.25 * 2.63%* + Amean fault-both-18 7351.11 ( 0.00%) 6950.51 * 5.45%* + Amean fault-both-24 9059.30 ( 0.00%) 9159.99 * -1.11%* + Amean fault-both-30 10685.68 ( 0.00%) 11399.02 * -6.68%* + +Upstream-Status: Backport [175fe77c Fix: mm_compaction_migratepages changed in linux 6.9-rc1] + +Change-Id: I103a43fd1b549360b3fc978fd409b7c17ef3e192 +Signed-off-by: Kienan Stewart <kstewart@efficios.com> +Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> +--- + include/instrumentation/events/compaction.h | 17 ++++++++++++++++- + 1 file changed, 16 insertions(+), 1 deletion(-) + +Index: lttng-modules-2.13.12/include/instrumentation/events/compaction.h +=================================================================== +--- lttng-modules-2.13.12.orig/include/instrumentation/events/compaction.h ++++ lttng-modules-2.13.12/include/instrumentation/events/compaction.h +@@ -97,7 +97,22 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(comp + + #endif /* #else #if LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,0,0) */ + +-#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,18,0) || \ ++#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,9,0)) ++LTTNG_TRACEPOINT_EVENT_MAP(mm_compaction_migratepages, ++ ++ compaction_migratepages, ++ ++ TP_PROTO(unsigned int nr_migratepages, ++ unsigned int nr_succeeded), ++ ++ TP_ARGS(nr_migratepages, nr_succeeded), ++ ++ TP_FIELDS( ++ ctf_integer(unsigned long, nr_migrated, nr_succeeded) ++ ctf_integer(unsigned long, nr_failed, nr_migratepages - nr_succeeded) ++ ) ++) ++#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,18,0) || \ + LTTNG_RHEL_KERNEL_RANGE(5,14,0,163,0,0, 5,15,0,0,0,0)) + LTTNG_TRACEPOINT_EVENT_MAP(mm_compaction_migratepages, + diff --git a/meta/recipes-kernel/lttng/lttng-modules/0004-Fix-dev_base_lock-removed-in-linux-6.9-rc1.patch b/meta/recipes-kernel/lttng/lttng-modules/0004-Fix-dev_base_lock-removed-in-linux-6.9-rc1.patch new file mode 100644 index 0000000000..59ef4f9313 --- /dev/null +++ b/meta/recipes-kernel/lttng/lttng-modules/0004-Fix-dev_base_lock-removed-in-linux-6.9-rc1.patch @@ -0,0 +1,57 @@ +From 217bc2e4685050dddce9bdd2557b64f6b8c16622 Mon Sep 17 00:00:00 2001 +From: Kienan Stewart <kstewart@efficios.com> +Date: Mon, 25 Mar 2024 10:53:46 -0400 +Subject: [PATCH 4/4] Fix: dev_base_lock removed in linux 6.9-rc1 + +See upstream commit: + + commit 1b3ef46cb7f2618cc0b507393220a69810f6da12 + Author: Eric Dumazet <edumazet@google.com> + Date: Tue Feb 13 06:32:45 2024 +0000 + + net: remove dev_base_lock + + dev_base_lock is not needed anymore, all remaining users also hold RTNL. + +Upstream-Status: Backport [52eb2ee9 Fix: dev_base_lock removed in linux 6.9-rc1] + +Change-Id: I6b07e6eed07fd398302ca14d23162ed24d74df15 +Signed-off-by: Kienan Stewart <kstewart@efficios.com> +Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> +--- + src/lttng-statedump-impl.c | 15 +++++++++++++++ + 1 file changed, 15 insertions(+) + +Index: lttng-modules-2.13.12/src/lttng-statedump-impl.c +=================================================================== +--- lttng-modules-2.13.12.orig/src/lttng-statedump-impl.c ++++ lttng-modules-2.13.12/src/lttng-statedump-impl.c +@@ -392,6 +392,20 @@ void lttng_enumerate_device(struct lttng + } + } + ++#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,9,0)) ++static ++int lttng_enumerate_network_ip_interface(struct lttng_kernel_session *session) ++{ ++ struct net_device *dev; ++ ++ rtnl_lock(); ++ for_each_netdev(&init_net, dev) ++ lttng_enumerate_device(session, dev); ++ rtnl_unlock(); ++ ++ return 0; ++} ++#else + static + int lttng_enumerate_network_ip_interface(struct lttng_kernel_session *session) + { +@@ -404,6 +418,7 @@ int lttng_enumerate_network_ip_interface + + return 0; + } ++#endif /* (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,9,0)) */ + #else /* CONFIG_INET */ + static inline + int lttng_enumerate_network_ip_interface(struct lttng_kernel_session *session) diff --git a/meta/recipes-kernel/lttng/lttng-modules/0004-Fix-timer-instrumentation-for-RHEL-7.6.patch b/meta/recipes-kernel/lttng/lttng-modules/0004-Fix-timer-instrumentation-for-RHEL-7.6.patch deleted file mode 100644 index b5d50dba1c..0000000000 --- a/meta/recipes-kernel/lttng/lttng-modules/0004-Fix-timer-instrumentation-for-RHEL-7.6.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 4eaeb54a27fbf701c2a4908a6e90a978b93deb06 Mon Sep 17 00:00:00 2001 -From: Michael Jeanson <mjeanson@efficios.com> -Date: Thu, 6 Dec 2018 11:31:51 -0500 -Subject: [PATCH 4/9] Fix: timer instrumentation for RHEL 7.6 - -Signed-off-by: Michael Jeanson <mjeanson@efficios.com> -Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> - -Upstream-Status: backport https://github.com/lttng/lttng-modules/commit/4eaeb54a27fbf701c2a4908a6e90a978b93deb06 - -Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com> ---- - instrumentation/events/lttng-module/timer.h | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/instrumentation/events/lttng-module/timer.h b/instrumentation/events/lttng-module/timer.h -index 6f0cb7f..8807ad5 100644 ---- a/instrumentation/events/lttng-module/timer.h -+++ b/instrumentation/events/lttng-module/timer.h -@@ -44,7 +44,8 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(timer_class, timer_init, - TP_ARGS(timer) - ) - --#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,2,0)) -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,2,0) || \ -+ LTTNG_RHEL_KERNEL_RANGE(3,10,0,957,0,0, 3,11,0,0,0,0)) - /** - * timer_start - called when the timer is started - * @timer: pointer to struct timer_list --- -2.19.1 - diff --git a/meta/recipes-kernel/lttng/lttng-modules/0005-Fix-Remove-type-argument-from-access_ok-function-v5..patch b/meta/recipes-kernel/lttng/lttng-modules/0005-Fix-Remove-type-argument-from-access_ok-function-v5..patch deleted file mode 100644 index 2266bbd9e0..0000000000 --- a/meta/recipes-kernel/lttng/lttng-modules/0005-Fix-Remove-type-argument-from-access_ok-function-v5..patch +++ /dev/null @@ -1,204 +0,0 @@ -From 0039dbe9891cfdf2c0d04691f83c2f342993dfd7 Mon Sep 17 00:00:00 2001 -From: Michael Jeanson <mjeanson@efficios.com> -Date: Wed, 9 Jan 2019 14:59:15 -0500 -Subject: [PATCH 5/9] Fix: Remove 'type' argument from access_ok() function - (v5.0) - -See upstream commit : - - commit 96d4f267e40f9509e8a66e2b39e8b95655617693 - Author: Linus Torvalds <torvalds@linux-foundation.org> - Date: Thu Jan 3 18:57:57 2019 -0800 - - Remove 'type' argument from access_ok() function - - Nobody has actually used the type (VERIFY_READ vs VERIFY_WRITE) argument - of the user address range verification function since we got rid of the - old racy i386-only code to walk page tables by hand. - - It existed because the original 80386 would not honor the write protect - bit when in kernel mode, so you had to do COW by hand before doing any - user access. But we haven't supported that in a long time, and these - days the 'type' argument is a purely historical artifact. - - A discussion about extending 'user_access_begin()' to do the range - checking resulted this patch, because there is no way we're going to - move the old VERIFY_xyz interface to that model. And it's best done at - the end of the merge window when I've done most of my merges, so let's - just get this done once and for all. - - This patch was mostly done with a sed-script, with manual fix-ups for - the cases that weren't of the trivial 'access_ok(VERIFY_xyz' form. - - There were a couple of notable cases: - - - csky still had the old "verify_area()" name as an alias. - - - the iter_iov code had magical hardcoded knowledge of the actual - values of VERIFY_{READ,WRITE} (not that they mattered, since nothing - really used it) - - - microblaze used the type argument for a debug printout - - but other than those oddities this should be a total no-op patch. - - I tried to fix up all architectures, did fairly extensive grepping for - access_ok() uses, and the changes are trivial, but I may have missed - something. Any missed conversion should be trivially fixable, though. - -Signed-off-by: Michael Jeanson <mjeanson@efficios.com> -Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> - -Upstream-Status: backport https://github.com/lttng/lttng-modules/commit/0039dbe9891cfdf2c0d04691f83c2f342993dfd7 - -Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com> ---- - lib/ringbuffer/backend.h | 8 ++++---- - lib/ringbuffer/ring_buffer_iterator.c | 3 ++- - lttng-filter-interpreter.c | 4 ++-- - probes/lttng-probe-user.c | 3 ++- - wrapper/uaccess.h | 28 +++++++++++++++++++++++++++ - 5 files changed, 38 insertions(+), 8 deletions(-) - create mode 100644 wrapper/uaccess.h - -diff --git a/lib/ringbuffer/backend.h b/lib/ringbuffer/backend.h -index 0b75de8..3f8c108 100644 ---- a/lib/ringbuffer/backend.h -+++ b/lib/ringbuffer/backend.h -@@ -34,7 +34,7 @@ - #include <linux/list.h> - #include <linux/fs.h> - #include <linux/mm.h> --#include <linux/uaccess.h> -+#include <wrapper/uaccess.h> - - /* Internal helpers */ - #include <wrapper/ringbuffer/backend_internal.h> -@@ -302,7 +302,7 @@ void lib_ring_buffer_copy_from_user_inatomic(const struct lib_ring_buffer_config - - set_fs(KERNEL_DS); - pagefault_disable(); -- if (unlikely(!access_ok(VERIFY_READ, src, len))) -+ if (unlikely(!lttng_access_ok(VERIFY_READ, src, len))) - goto fill_buffer; - - if (likely(pagecpy == len)) { -@@ -372,7 +372,7 @@ void lib_ring_buffer_strcpy_from_user_inatomic(const struct lib_ring_buffer_conf - - set_fs(KERNEL_DS); - pagefault_disable(); -- if (unlikely(!access_ok(VERIFY_READ, src, len))) -+ if (unlikely(!lttng_access_ok(VERIFY_READ, src, len))) - goto fill_buffer; - - if (likely(pagecpy == len)) { -@@ -462,7 +462,7 @@ unsigned long lib_ring_buffer_copy_from_user_check_nofault(void *dest, - unsigned long ret; - mm_segment_t old_fs; - -- if (!access_ok(VERIFY_READ, src, len)) -+ if (!lttng_access_ok(VERIFY_READ, src, len)) - return 1; - old_fs = get_fs(); - set_fs(KERNEL_DS); -diff --git a/lib/ringbuffer/ring_buffer_iterator.c b/lib/ringbuffer/ring_buffer_iterator.c -index 61eaa5b..9645946 100644 ---- a/lib/ringbuffer/ring_buffer_iterator.c -+++ b/lib/ringbuffer/ring_buffer_iterator.c -@@ -27,6 +27,7 @@ - - #include <wrapper/ringbuffer/iterator.h> - #include <wrapper/file.h> -+#include <wrapper/uaccess.h> - #include <linux/jiffies.h> - #include <linux/delay.h> - #include <linux/module.h> -@@ -621,7 +622,7 @@ ssize_t channel_ring_buffer_file_read(struct file *filp, - ssize_t len; - - might_sleep(); -- if (!access_ok(VERIFY_WRITE, user_buf, count)) -+ if (!lttng_access_ok(VERIFY_WRITE, user_buf, count)) - return -EFAULT; - - /* Finish copy of previous record */ -diff --git a/lttng-filter-interpreter.c b/lttng-filter-interpreter.c -index e131462..bee2918 100644 ---- a/lttng-filter-interpreter.c -+++ b/lttng-filter-interpreter.c -@@ -24,7 +24,7 @@ - * SOFTWARE. - */ - --#include <linux/uaccess.h> -+#include <wrapper/uaccess.h> - #include <wrapper/frame.h> - #include <wrapper/types.h> - -@@ -46,7 +46,7 @@ char get_char(struct estack_entry *reg, size_t offset) - char c; - - /* Handle invalid access as end of string. */ -- if (unlikely(!access_ok(VERIFY_READ, -+ if (unlikely(!lttng_access_ok(VERIFY_READ, - reg->u.s.user_str + offset, - sizeof(c)))) - return '\0'; -diff --git a/probes/lttng-probe-user.c b/probes/lttng-probe-user.c -index 099a66b..ed566dd 100644 ---- a/probes/lttng-probe-user.c -+++ b/probes/lttng-probe-user.c -@@ -20,6 +20,7 @@ - - #include <linux/uaccess.h> - #include <linux/module.h> -+#include <wrapper/uaccess.h> - #include <probes/lttng-probe-user.h> - - /* -@@ -43,7 +44,7 @@ long lttng_strlen_user_inatomic(const char *addr) - char v; - unsigned long ret; - -- if (unlikely(!access_ok(VERIFY_READ, -+ if (unlikely(!lttng_access_ok(VERIFY_READ, - (__force const char __user *) addr, - sizeof(v)))) - break; -diff --git a/wrapper/uaccess.h b/wrapper/uaccess.h -new file mode 100644 -index 0000000..c56427c ---- /dev/null -+++ b/wrapper/uaccess.h -@@ -0,0 +1,28 @@ -+/* SPDX-License-Identifier: (GPL-2.0 or LGPL-2.1) -+ * -+ * wrapper/uaccess.h -+ * -+ * wrapper around linux/uaccess.h. -+ * -+ * Copyright (C) 2019 Michael Jeanson <mjeanson@efficios.com> -+ */ -+ -+#ifndef _LTTNG_WRAPPER_UACCESS_H -+#define _LTTNG_WRAPPER_UACCESS_H -+ -+#include <linux/uaccess.h> -+#include <lttng-kernel-version.h> -+ -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,0,0)) -+ -+#define VERIFY_READ 0 -+#define VERIFY_WRITE 1 -+#define lttng_access_ok(type, addr, size) access_ok(addr, size) -+ -+#else /* LINUX_VERSION_CODE >= KERNEL_VERSION(5,0,0) */ -+ -+#define lttng_access_ok(type, addr, size) access_ok(type, addr, size) -+ -+#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(5,0,0) */ -+ -+#endif /* _LTTNG_WRAPPER_UACCESS_H */ --- -2.19.1 - diff --git a/meta/recipes-kernel/lttng/lttng-modules/0006-Fix-Replace-pointer-values-with-task-tk_pid-and-rpc_.patch b/meta/recipes-kernel/lttng/lttng-modules/0006-Fix-Replace-pointer-values-with-task-tk_pid-and-rpc_.patch deleted file mode 100644 index 089486f51b..0000000000 --- a/meta/recipes-kernel/lttng/lttng-modules/0006-Fix-Replace-pointer-values-with-task-tk_pid-and-rpc_.patch +++ /dev/null @@ -1,186 +0,0 @@ -From 89f0be35e1baf411df6852014013ac64ad1bbcf8 Mon Sep 17 00:00:00 2001 -From: Michael Jeanson <mjeanson@efficios.com> -Date: Wed, 9 Jan 2019 14:59:16 -0500 -Subject: [PATCH 6/9] Fix: Replace pointer values with task->tk_pid and - rpc_clnt->cl_clid - -Introduced in v3.12. - -See upstream commit : - - commit 92cb6c5be8134db6f7c38f25f6afd13e444cebaf - Author: Trond Myklebust <Trond.Myklebust@netapp.com> - Date: Wed Sep 4 22:09:50 2013 -0400 - - SUNRPC: Replace pointer values with task->tk_pid and rpc_clnt->cl_clid - - Instead of the pointer values, use the task and client identifier values - for tracing purposes. - -Signed-off-by: Michael Jeanson <mjeanson@efficios.com> -Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> - -Upstream-Status: backport https://github.com/lttng/lttng-modules/commit/89f0be35e1baf411df6852014013ac64ad1bbcf8 - -Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com> ---- - instrumentation/events/lttng-module/rpc.h | 108 ++++++++++++++++++++-- - 1 file changed, 102 insertions(+), 6 deletions(-) - -diff --git a/instrumentation/events/lttng-module/rpc.h b/instrumentation/events/lttng-module/rpc.h -index b9e45fe..a4ac557 100644 ---- a/instrumentation/events/lttng-module/rpc.h -+++ b/instrumentation/events/lttng-module/rpc.h -@@ -8,6 +8,20 @@ - #include <linux/sunrpc/sched.h> - #include <linux/sunrpc/clnt.h> - -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0)) -+LTTNG_TRACEPOINT_EVENT_CLASS(rpc_task_status, -+ -+ TP_PROTO(struct rpc_task *task), -+ -+ TP_ARGS(task), -+ -+ TP_FIELDS( -+ ctf_integer(unsigned int, task_id, task->tk_pid) -+ ctf_integer(unsigned int, client_id, task->tk_client->cl_clid) -+ ctf_integer(int, status, task->tk_status) -+ ) -+) -+#else - LTTNG_TRACEPOINT_EVENT_CLASS(rpc_task_status, - - TP_PROTO(struct rpc_task *task), -@@ -20,6 +34,7 @@ LTTNG_TRACEPOINT_EVENT_CLASS(rpc_task_status, - ctf_integer(int, status, task->tk_status) - ) - ) -+#endif - - LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_status, rpc_call_status, - TP_PROTO(struct rpc_task *task), -@@ -40,8 +55,8 @@ LTTNG_TRACEPOINT_EVENT(rpc_connect_status, - TP_ARGS(task), - - TP_FIELDS( -- ctf_integer_hex(const struct rpc_task *, task, task) -- ctf_integer_hex(const struct rpc_clnt *, clnt, task->tk_client) -+ ctf_integer(unsigned int, task_id, task->tk_pid) -+ ctf_integer(unsigned int, client_id, task->tk_client->cl_clid) - ctf_integer(int, status, task->tk_status) - ) - ) -@@ -53,8 +68,8 @@ LTTNG_TRACEPOINT_EVENT_CLASS(rpc_task_running, - TP_ARGS(task, action), - - TP_FIELDS( -- ctf_integer_hex(const struct rpc_clnt *, clnt, task->tk_client) -- ctf_integer_hex(const struct rpc_task *, task, task) -+ ctf_integer(unsigned int, task_id, task->tk_pid) -+ ctf_integer(unsigned int, client_id, task->tk_client->cl_clid) - ctf_integer_hex(const void *, action, action) - ctf_integer(unsigned long, runstate, task->tk_runstate) - ctf_integer(int, status, task->tk_status) -@@ -90,8 +105,8 @@ LTTNG_TRACEPOINT_EVENT_CLASS(rpc_task_queued, - TP_ARGS(task, q), - - TP_FIELDS( -- ctf_integer_hex(const struct rpc_clnt *, clnt, task->tk_client) -- ctf_integer_hex(const struct rpc_task *, task, task) -+ ctf_integer(unsigned int, task_id, task->tk_pid) -+ ctf_integer(unsigned int, client_id, task->tk_client->cl_clid) - ctf_integer(unsigned long, timeout, task->tk_timeout) - ctf_integer(unsigned long, runstate, task->tk_runstate) - ctf_integer(int, status, task->tk_status) -@@ -114,6 +129,87 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_queued, rpc_task_wakeup, - TP_ARGS(task, q) - ) - -+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0)) -+LTTNG_TRACEPOINT_EVENT(rpc_connect_status, -+ TP_PROTO(struct rpc_task *task, int status), -+ -+ TP_ARGS(task, status), -+ -+ TP_FIELDS( -+ ctf_integer(unsigned int, task_id, task->tk_pid) -+ ctf_integer(unsigned int, client_id, task->tk_client->cl_clid) -+ ctf_integer(int, status, status) -+ ) -+) -+ -+LTTNG_TRACEPOINT_EVENT_CLASS(rpc_task_running, -+ -+ TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const void *action), -+ -+ TP_ARGS(clnt, task, action), -+ -+ TP_FIELDS( -+ ctf_integer(unsigned int, task_id, task->tk_pid) -+ ctf_integer(unsigned int, client_id, task->tk_client->cl_clid) -+ ctf_integer_hex(const void *, action, action) -+ ctf_integer(unsigned long, runstate, task->tk_runstate) -+ ctf_integer(int, status, task->tk_status) -+ ctf_integer(unsigned short, flags, task->tk_flags) -+ ) -+) -+ -+LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_running, rpc_task_begin, -+ -+ TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const void *action), -+ -+ TP_ARGS(clnt, task, action) -+) -+ -+LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_running, rpc_task_run_action, -+ -+ TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const void *action), -+ -+ TP_ARGS(clnt, task, action) -+) -+ -+LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_running, rpc_task_complete, -+ -+ TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const void *action), -+ -+ TP_ARGS(clnt, task, action) -+) -+ -+LTTNG_TRACEPOINT_EVENT_CLASS(rpc_task_queued, -+ -+ TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const struct rpc_wait_queue *q), -+ -+ TP_ARGS(clnt, task, q), -+ -+ TP_FIELDS( -+ ctf_integer(unsigned int, task_id, task->tk_pid) -+ ctf_integer(unsigned int, client_id, task->tk_client->cl_clid) -+ ctf_integer(unsigned long, timeout, task->tk_timeout) -+ ctf_integer(unsigned long, runstate, task->tk_runstate) -+ ctf_integer(int, status, task->tk_status) -+ ctf_integer(unsigned short, flags, task->tk_flags) -+ ctf_string(q_name, rpc_qname(q)) -+ ) -+) -+ -+LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_queued, rpc_task_sleep, -+ -+ TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const struct rpc_wait_queue *q), -+ -+ TP_ARGS(clnt, task, q) -+) -+ -+LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_queued, rpc_task_wakeup, -+ -+ TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const struct rpc_wait_queue *q), -+ -+ TP_ARGS(clnt, task, q) -+) -+ - #else - LTTNG_TRACEPOINT_EVENT(rpc_connect_status, - TP_PROTO(struct rpc_task *task, int status), --- -2.19.1 - diff --git a/meta/recipes-kernel/lttng/lttng-modules/0007-Fix-SUNRPC-Simplify-defining-common-RPC-trace-events.patch b/meta/recipes-kernel/lttng/lttng-modules/0007-Fix-SUNRPC-Simplify-defining-common-RPC-trace-events.patch deleted file mode 100644 index f3673301de..0000000000 --- a/meta/recipes-kernel/lttng/lttng-modules/0007-Fix-SUNRPC-Simplify-defining-common-RPC-trace-events.patch +++ /dev/null @@ -1,183 +0,0 @@ -From d11b568681f87c2df6ecb0516d3f16d153f24bd2 Mon Sep 17 00:00:00 2001 -From: Michael Jeanson <mjeanson@efficios.com> -Date: Wed, 9 Jan 2019 14:59:17 -0500 -Subject: [PATCH 7/9] Fix: SUNRPC: Simplify defining common RPC trace events - (v5.0) - -See upstream commit : - - commit dc5820bd21d84ee34770b0a1e2fca9378f8f7456 - Author: Chuck Lever <chuck.lever@oracle.com> - Date: Wed Dec 19 11:00:16 2018 -0500 - - SUNRPC: Simplify defining common RPC trace events - - Clean up, no functional change is expected. - -Signed-off-by: Michael Jeanson <mjeanson@efficios.com> -Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> - -Upstream-Status: backport https://github.com/lttng/lttng-modules/commit/d11b568681f87c2df6ecb0516d3f16d153f24bd2 - -Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com> ---- - instrumentation/events/lttng-module/rpc.h | 99 ++++++++++++++++------- - 1 file changed, 72 insertions(+), 27 deletions(-) - -diff --git a/instrumentation/events/lttng-module/rpc.h b/instrumentation/events/lttng-module/rpc.h -index a4ac557..4239280 100644 ---- a/instrumentation/events/lttng-module/rpc.h -+++ b/instrumentation/events/lttng-module/rpc.h -@@ -8,7 +8,32 @@ - #include <linux/sunrpc/sched.h> - #include <linux/sunrpc/clnt.h> - --#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0)) -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,0,0)) -+LTTNG_TRACEPOINT_EVENT_CLASS(rpc_task_status, -+ -+ TP_PROTO(const struct rpc_task *task), -+ -+ TP_ARGS(task), -+ -+ TP_FIELDS( -+ ctf_integer(unsigned int, task_id, task->tk_pid) -+ ctf_integer(unsigned int, client_id, task->tk_client->cl_clid) -+ ctf_integer(int, status, task->tk_status) -+ ) -+) -+ -+LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_status, rpc_call_status, -+ TP_PROTO(const struct rpc_task *task), -+ -+ TP_ARGS(task) -+) -+ -+LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_status, rpc_bind_status, -+ TP_PROTO(const struct rpc_task *task), -+ -+ TP_ARGS(task) -+) -+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0)) - LTTNG_TRACEPOINT_EVENT_CLASS(rpc_task_status, - - TP_PROTO(struct rpc_task *task), -@@ -21,6 +46,18 @@ LTTNG_TRACEPOINT_EVENT_CLASS(rpc_task_status, - ctf_integer(int, status, task->tk_status) - ) - ) -+ -+LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_status, rpc_call_status, -+ TP_PROTO(struct rpc_task *task), -+ -+ TP_ARGS(task) -+) -+ -+LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_status, rpc_bind_status, -+ TP_PROTO(struct rpc_task *task), -+ -+ TP_ARGS(task) -+) - #else - LTTNG_TRACEPOINT_EVENT_CLASS(rpc_task_status, - -@@ -34,7 +71,6 @@ LTTNG_TRACEPOINT_EVENT_CLASS(rpc_task_status, - ctf_integer(int, status, task->tk_status) - ) - ) --#endif - - LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_status, rpc_call_status, - TP_PROTO(struct rpc_task *task), -@@ -47,8 +83,15 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_status, rpc_bind_status, - - TP_ARGS(task) - ) -+#endif - --#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,17,0)) -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,0,0)) -+LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_status, rpc_connect_status, -+ TP_PROTO(const struct rpc_task *task), -+ -+ TP_ARGS(task) -+) -+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4,17,0)) - LTTNG_TRACEPOINT_EVENT(rpc_connect_status, - TP_PROTO(const struct rpc_task *task), - -@@ -60,7 +103,33 @@ LTTNG_TRACEPOINT_EVENT(rpc_connect_status, - ctf_integer(int, status, task->tk_status) - ) - ) -+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0)) -+LTTNG_TRACEPOINT_EVENT(rpc_connect_status, -+ TP_PROTO(struct rpc_task *task, int status), -+ -+ TP_ARGS(task, status), -+ -+ TP_FIELDS( -+ ctf_integer(unsigned int, task_id, task->tk_pid) -+ ctf_integer(unsigned int, client_id, task->tk_client->cl_clid) -+ ctf_integer(int, status, status) -+ ) -+) -+#else -+LTTNG_TRACEPOINT_EVENT(rpc_connect_status, -+ TP_PROTO(struct rpc_task *task, int status), -+ -+ TP_ARGS(task, status), -+ -+ TP_FIELDS( -+ ctf_integer_hex(const struct rpc_task *, task, task) -+ ctf_integer_hex(const struct rpc_clnt *, clnt, task->tk_client) -+ ctf_integer(int, status, status) -+ ) -+) -+#endif - -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,17,0)) - LTTNG_TRACEPOINT_EVENT_CLASS(rpc_task_running, - - TP_PROTO(const struct rpc_task *task, const void *action), -@@ -130,18 +199,6 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_queued, rpc_task_wakeup, - ) - - #elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0)) --LTTNG_TRACEPOINT_EVENT(rpc_connect_status, -- TP_PROTO(struct rpc_task *task, int status), -- -- TP_ARGS(task, status), -- -- TP_FIELDS( -- ctf_integer(unsigned int, task_id, task->tk_pid) -- ctf_integer(unsigned int, client_id, task->tk_client->cl_clid) -- ctf_integer(int, status, status) -- ) --) -- - LTTNG_TRACEPOINT_EVENT_CLASS(rpc_task_running, - - TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const void *action), -@@ -211,18 +268,6 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_queued, rpc_task_wakeup, - ) - - #else --LTTNG_TRACEPOINT_EVENT(rpc_connect_status, -- TP_PROTO(struct rpc_task *task, int status), -- -- TP_ARGS(task, status), -- -- TP_FIELDS( -- ctf_integer_hex(const struct rpc_task *, task, task) -- ctf_integer_hex(const struct rpc_clnt *, clnt, task->tk_client) -- ctf_integer(int, status, status) -- ) --) -- - LTTNG_TRACEPOINT_EVENT_CLASS(rpc_task_running, - - TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const void *action), --- -2.19.1 - diff --git a/meta/recipes-kernel/lttng/lttng-modules/0008-Fix-btrfs-Remove-fsid-metadata_fsid-fields-from-btrf.patch b/meta/recipes-kernel/lttng/lttng-modules/0008-Fix-btrfs-Remove-fsid-metadata_fsid-fields-from-btrf.patch deleted file mode 100644 index 5f12989956..0000000000 --- a/meta/recipes-kernel/lttng/lttng-modules/0008-Fix-btrfs-Remove-fsid-metadata_fsid-fields-from-btrf.patch +++ /dev/null @@ -1,341 +0,0 @@ -From 8af8245f6f86370d01cc4acaabafb90de45e143f Mon Sep 17 00:00:00 2001 -From: Michael Jeanson <mjeanson@efficios.com> -Date: Thu, 10 Jan 2019 14:56:15 -0500 -Subject: [PATCH 8/9] Fix: btrfs: Remove fsid/metadata_fsid fields from - btrfs_info - -Introduced in v5.0. - -See upstream commit : - - commit de37aa513105f864d3c21105bf5542d498f21ca2 - Author: Nikolay Borisov <nborisov@suse.com> - Date: Tue Oct 30 16:43:24 2018 +0200 - - btrfs: Remove fsid/metadata_fsid fields from btrfs_info - - Currently btrfs_fs_info structure contains a copy of the - fsid/metadata_uuid fields. Same values are also contained in the - btrfs_fs_devices structure which fs_info has a reference to. Let's - reduce duplication by removing the fields from fs_info and always refer - to the ones in fs_devices. No functional changes. - -Signed-off-by: Michael Jeanson <mjeanson@efficios.com> -Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> - -Upstream-Status: backport https://github.com/lttng/lttng-modules/commit/8af8245f6f86370d01cc4acaabafb90de45e143f - -Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com> ---- - instrumentation/events/lttng-module/btrfs.h | 100 +++++++++++--------- - 1 file changed, 53 insertions(+), 47 deletions(-) - -diff --git a/instrumentation/events/lttng-module/btrfs.h b/instrumentation/events/lttng-module/btrfs.h -index 4dfbf5b..ec45a1e 100644 ---- a/instrumentation/events/lttng-module/btrfs.h -+++ b/instrumentation/events/lttng-module/btrfs.h -@@ -32,6 +32,12 @@ struct extent_state; - - #define BTRFS_UUID_SIZE 16 - -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,0,0)) -+#define lttng_fs_info_fsid fs_info->fs_devices->fsid -+#else -+#define lttng_fs_info_fsid fs_info->fsid -+#endif -+ - #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,14,0) || \ - LTTNG_SLE_KERNEL_RANGE(4,4,73,5,0,0, 4,4,73,6,0,0) || \ - LTTNG_SLE_KERNEL_RANGE(4,4,82,6,0,0, 4,4,82,7,0,0) || \ -@@ -629,7 +635,7 @@ LTTNG_TRACEPOINT_EVENT(btrfs_add_block_group, - TP_ARGS(fs_info, block_group, create), - - TP_FIELDS( -- ctf_array(u8, fsid, fs_info->fsid, BTRFS_UUID_SIZE) -+ ctf_array(u8, fsid, lttng_fs_info_fsid, BTRFS_UUID_SIZE) - ctf_integer(u64, offset, block_group->key.objectid) - ctf_integer(u64, size, block_group->key.offset) - ctf_integer(u64, flags, block_group->flags) -@@ -647,7 +653,7 @@ LTTNG_TRACEPOINT_EVENT(btrfs_add_block_group, - TP_ARGS(fs_info, block_group, create), - - TP_FIELDS( -- ctf_array(u8, fsid, fs_info->fsid, BTRFS_UUID_SIZE) -+ ctf_array(u8, fsid, lttng_fs_info_fsid, BTRFS_UUID_SIZE) - ctf_integer(u64, offset, block_group->key.objectid) - ctf_integer(u64, size, block_group->key.offset) - ctf_integer(u64, flags, block_group->flags) -@@ -1015,18 +1021,18 @@ LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__chunk, - - LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__chunk, btrfs_chunk_alloc, - -- TP_PROTO(const struct btrfs_fs_info *info, const struct map_lookup *map, -+ TP_PROTO(const struct btrfs_fs_info *fs_info, const struct map_lookup *map, - u64 offset, u64 size), - -- TP_ARGS(info, map, offset, size) -+ TP_ARGS(fs_info, map, offset, size) - ) - - LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__chunk, btrfs_chunk_free, - -- TP_PROTO(const struct btrfs_fs_info *info, const struct map_lookup *map, -+ TP_PROTO(const struct btrfs_fs_info *fs_info, const struct map_lookup *map, - u64 offset, u64 size), - -- TP_ARGS(info, map, offset, size) -+ TP_ARGS(fs_info, map, offset, size) - ) - - #elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4,10,0)) -@@ -1050,18 +1056,18 @@ LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__chunk, - - LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__chunk, btrfs_chunk_alloc, - -- TP_PROTO(struct btrfs_fs_info *info, struct map_lookup *map, -+ TP_PROTO(struct btrfs_fs_info *fs_info, struct map_lookup *map, - u64 offset, u64 size), - -- TP_ARGS(info, map, offset, size) -+ TP_ARGS(fs_info, map, offset, size) - ) - - LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__chunk, btrfs_chunk_free, - -- TP_PROTO(struct btrfs_fs_info *info, struct map_lookup *map, -+ TP_PROTO(struct btrfs_fs_info *fs_info, struct map_lookup *map, - u64 offset, u64 size), - -- TP_ARGS(info, map, offset, size) -+ TP_ARGS(fs_info, map, offset, size) - ) - - #elif (LTTNG_SLE_KERNEL_RANGE(4,4,73,5,0,0, 4,4,73,6,0,0) || \ -@@ -1192,7 +1198,7 @@ LTTNG_TRACEPOINT_EVENT(btrfs_space_reservation, - TP_ARGS(fs_info, type, val, bytes, reserve), - - TP_FIELDS( -- ctf_array(u8, fsid, fs_info->fsid, BTRFS_UUID_SIZE) -+ ctf_array(u8, fsid, lttng_fs_info_fsid, BTRFS_UUID_SIZE) - ctf_string(type, type) - ctf_integer(u64, val, val) - ctf_integer(u64, bytes, bytes) -@@ -1208,7 +1214,7 @@ LTTNG_TRACEPOINT_EVENT(btrfs_space_reservation, - TP_ARGS(fs_info, type, val, bytes, reserve), - - TP_FIELDS( -- ctf_array(u8, fsid, fs_info->fsid, BTRFS_UUID_SIZE) -+ ctf_array(u8, fsid, lttng_fs_info_fsid, BTRFS_UUID_SIZE) - ctf_string(type, type) - ctf_integer(u64, val, val) - ctf_integer(u64, bytes, bytes) -@@ -1221,9 +1227,9 @@ LTTNG_TRACEPOINT_EVENT(btrfs_space_reservation, - - LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__reserved_extent, - -- TP_PROTO(const struct btrfs_fs_info *info, u64 start, u64 len), -+ TP_PROTO(const struct btrfs_fs_info *fs_info, u64 start, u64 len), - -- TP_ARGS(info, start, len), -+ TP_ARGS(fs_info, start, len), - - TP_FIELDS( - ctf_integer(u64, start, start) -@@ -1233,25 +1239,25 @@ LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__reserved_extent, - - LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__reserved_extent, btrfs_reserved_extent_alloc, - -- TP_PROTO(const struct btrfs_fs_info *info, u64 start, u64 len), -+ TP_PROTO(const struct btrfs_fs_info *fs_info, u64 start, u64 len), - -- TP_ARGS(info, start, len) -+ TP_ARGS(fs_info, start, len) - ) - - LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__reserved_extent, btrfs_reserved_extent_free, - -- TP_PROTO(const struct btrfs_fs_info *info, u64 start, u64 len), -+ TP_PROTO(const struct btrfs_fs_info *fs_info, u64 start, u64 len), - -- TP_ARGS(info, start, len) -+ TP_ARGS(fs_info, start, len) - ) - - #elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4,10,0)) - - LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__reserved_extent, - -- TP_PROTO(struct btrfs_fs_info *info, u64 start, u64 len), -+ TP_PROTO(struct btrfs_fs_info *fs_info, u64 start, u64 len), - -- TP_ARGS(info, start, len), -+ TP_ARGS(fs_info, start, len), - - TP_FIELDS( - ctf_integer(u64, start, start) -@@ -1261,16 +1267,16 @@ LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__reserved_extent, - - LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__reserved_extent, btrfs_reserved_extent_alloc, - -- TP_PROTO(struct btrfs_fs_info *info, u64 start, u64 len), -+ TP_PROTO(struct btrfs_fs_info *fs_info, u64 start, u64 len), - -- TP_ARGS(info, start, len) -+ TP_ARGS(fs_info, start, len) - ) - - LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__reserved_extent, btrfs_reserved_extent_free, - -- TP_PROTO(struct btrfs_fs_info *info, u64 start, u64 len), -+ TP_PROTO(struct btrfs_fs_info *fs_info, u64 start, u64 len), - -- TP_ARGS(info, start, len) -+ TP_ARGS(fs_info, start, len) - ) - - #elif (LTTNG_SLE_KERNEL_RANGE(4,4,73,5,0,0, 4,4,73,6,0,0) || \ -@@ -1341,13 +1347,13 @@ LTTNG_TRACEPOINT_EVENT_MAP(find_free_extent, - - btrfs_find_free_extent, - -- TP_PROTO(const struct btrfs_fs_info *info, u64 num_bytes, u64 empty_size, -+ TP_PROTO(const struct btrfs_fs_info *fs_info, u64 num_bytes, u64 empty_size, - u64 data), - -- TP_ARGS(info, num_bytes, empty_size, data), -+ TP_ARGS(fs_info, num_bytes, empty_size, data), - - TP_FIELDS( -- ctf_array(u8, fsid, info->fsid, BTRFS_UUID_SIZE) -+ ctf_array(u8, fsid, lttng_fs_info_fsid, BTRFS_UUID_SIZE) - ctf_integer(u64, num_bytes, num_bytes) - ctf_integer(u64, empty_size, empty_size) - ctf_integer(u64, data, data) -@@ -1362,7 +1368,7 @@ LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__reserve_extent, - TP_ARGS(block_group, start, len), - - TP_FIELDS( -- ctf_array(u8, fsid, block_group->fs_info->fsid, BTRFS_UUID_SIZE) -+ ctf_array(u8, fsid, block_group->lttng_fs_info_fsid, BTRFS_UUID_SIZE) - ctf_integer(u64, bg_objectid, block_group->key.objectid) - ctf_integer(u64, flags, block_group->flags) - ctf_integer(u64, start, start) -@@ -1391,13 +1397,13 @@ LTTNG_TRACEPOINT_EVENT_MAP(find_free_extent, - - btrfs_find_free_extent, - -- TP_PROTO(const struct btrfs_fs_info *info, u64 num_bytes, u64 empty_size, -+ TP_PROTO(const struct btrfs_fs_info *fs_info, u64 num_bytes, u64 empty_size, - u64 data), - -- TP_ARGS(info, num_bytes, empty_size, data), -+ TP_ARGS(fs_info, num_bytes, empty_size, data), - - TP_FIELDS( -- ctf_array(u8, fsid, info->fsid, BTRFS_UUID_SIZE) -+ ctf_array(u8, fsid, lttng_fs_info_fsid, BTRFS_UUID_SIZE) - ctf_integer(u64, num_bytes, num_bytes) - ctf_integer(u64, empty_size, empty_size) - ctf_integer(u64, data, data) -@@ -1406,14 +1412,14 @@ LTTNG_TRACEPOINT_EVENT_MAP(find_free_extent, - - LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__reserve_extent, - -- TP_PROTO(const struct btrfs_fs_info *info, -+ TP_PROTO(const struct btrfs_fs_info *fs_info, - const struct btrfs_block_group_cache *block_group, u64 start, - u64 len), - -- TP_ARGS(info, block_group, start, len), -+ TP_ARGS(fs_info, block_group, start, len), - - TP_FIELDS( -- ctf_array(u8, fsid, info->fsid, BTRFS_UUID_SIZE) -+ ctf_array(u8, fsid, lttng_fs_info_fsid, BTRFS_UUID_SIZE) - ctf_integer(u64, bg_objectid, block_group->key.objectid) - ctf_integer(u64, flags, block_group->flags) - ctf_integer(u64, start, start) -@@ -1423,20 +1429,20 @@ LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__reserve_extent, - - LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__reserve_extent, btrfs_reserve_extent, - -- TP_PROTO(const struct btrfs_fs_info *info, -+ TP_PROTO(const struct btrfs_fs_info *fs_info, - const struct btrfs_block_group_cache *block_group, u64 start, - u64 len), - -- TP_ARGS(info, block_group, start, len) -+ TP_ARGS(fs_info, block_group, start, len) - ) - - LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__reserve_extent, btrfs_reserve_extent_cluster, - -- TP_PROTO(const struct btrfs_fs_info *info, -+ TP_PROTO(const struct btrfs_fs_info *fs_info, - const struct btrfs_block_group_cache *block_group, u64 start, - u64 len), - -- TP_ARGS(info, block_group, start, len) -+ TP_ARGS(fs_info, block_group, start, len) - ) - - #elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4,10,0)) -@@ -1445,13 +1451,13 @@ LTTNG_TRACEPOINT_EVENT_MAP(find_free_extent, - - btrfs_find_free_extent, - -- TP_PROTO(struct btrfs_fs_info *info, u64 num_bytes, u64 empty_size, -+ TP_PROTO(struct btrfs_fs_info *fs_info, u64 num_bytes, u64 empty_size, - u64 data), - -- TP_ARGS(info, num_bytes, empty_size, data), -+ TP_ARGS(fs_info, num_bytes, empty_size, data), - - TP_FIELDS( -- ctf_array(u8, fsid, info->fsid, BTRFS_UUID_SIZE) -+ ctf_array(u8, fsid, lttng_fs_info_fsid, BTRFS_UUID_SIZE) - ctf_integer(u64, num_bytes, num_bytes) - ctf_integer(u64, empty_size, empty_size) - ctf_integer(u64, data, data) -@@ -1460,11 +1466,11 @@ LTTNG_TRACEPOINT_EVENT_MAP(find_free_extent, - - LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__reserve_extent, - -- TP_PROTO(struct btrfs_fs_info *info, -+ TP_PROTO(struct btrfs_fs_info *fs_info, - struct btrfs_block_group_cache *block_group, u64 start, - u64 len), - -- TP_ARGS(info, block_group, start, len), -+ TP_ARGS(fs_info, block_group, start, len), - - TP_FIELDS( - ctf_integer(u64, bg_objectid, block_group->key.objectid) -@@ -1476,20 +1482,20 @@ LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__reserve_extent, - - LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__reserve_extent, btrfs_reserve_extent, - -- TP_PROTO(struct btrfs_fs_info *info, -+ TP_PROTO(struct btrfs_fs_info *fs_info, - struct btrfs_block_group_cache *block_group, u64 start, - u64 len), - -- TP_ARGS(info, block_group, start, len) -+ TP_ARGS(fs_info, block_group, start, len) - ) - - LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__reserve_extent, btrfs_reserve_extent_cluster, - -- TP_PROTO(struct btrfs_fs_info *info, -+ TP_PROTO(struct btrfs_fs_info *fs_info, - struct btrfs_block_group_cache *block_group, u64 start, - u64 len), - -- TP_ARGS(info, block_group, start, len) -+ TP_ARGS(fs_info, block_group, start, len) - ) - #elif (LTTNG_SLE_KERNEL_RANGE(4,4,73,5,0,0, 4,4,73,6,0,0) || \ - LTTNG_SLE_KERNEL_RANGE(4,4,82,6,0,0, 4,4,82,7,0,0) || \ --- -2.19.1 - diff --git a/meta/recipes-kernel/lttng/lttng-modules/0009-Cleanup-tp-mempool-Remove-logically-dead-code.patch b/meta/recipes-kernel/lttng/lttng-modules/0009-Cleanup-tp-mempool-Remove-logically-dead-code.patch deleted file mode 100644 index 4ffe488677..0000000000 --- a/meta/recipes-kernel/lttng/lttng-modules/0009-Cleanup-tp-mempool-Remove-logically-dead-code.patch +++ /dev/null @@ -1,46 +0,0 @@ -From 416cee8707053a9015dfec8332e12f8c263098e3 Mon Sep 17 00:00:00 2001 -From: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> -Date: Thu, 14 Feb 2019 11:40:50 -0500 -Subject: [PATCH 9/9] Cleanup: tp mempool: Remove logically dead code - -Found by Coverity: -CID 1391045 (#1 of 1): Logically dead code (DEADCODE) - -Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> - -Upstream-Status: backport https://github.com/lttng/lttng-modules/commit/416cee8707053a9015dfec8332e12f8c263098e3 - -Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com> ---- - lttng-tp-mempool.c | 11 ++--------- - 1 file changed, 2 insertions(+), 9 deletions(-) - -diff --git a/lttng-tp-mempool.c b/lttng-tp-mempool.c -index d984bd4..21e8376 100644 ---- a/lttng-tp-mempool.c -+++ b/lttng-tp-mempool.c -@@ -151,19 +151,12 @@ void lttng_tp_mempool_free(void *ptr) - struct lttng_tp_buf_entry *entry; - struct per_cpu_buf *cpu_buf; - -- if (!ptr) { -+ if (!ptr) - goto end; -- } -- - entry = container_of(ptr, struct lttng_tp_buf_entry, buf); -- if (!entry) { -- goto end; -- } -- - cpu_buf = per_cpu_ptr(pool, entry->cpu); -- if (!cpu_buf) { -+ if (!cpu_buf) - goto end; -- } - /* Add it to the free list. */ - list_add_tail(&entry->list, &cpu_buf->free_list); - --- -2.19.1 - diff --git a/meta/recipes-kernel/lttng/lttng-modules/BUILD_RUNTIME_BUG_ON-vs-gcc7.patch b/meta/recipes-kernel/lttng/lttng-modules/BUILD_RUNTIME_BUG_ON-vs-gcc7.patch deleted file mode 100644 index 76063607a8..0000000000 --- a/meta/recipes-kernel/lttng/lttng-modules/BUILD_RUNTIME_BUG_ON-vs-gcc7.patch +++ /dev/null @@ -1,43 +0,0 @@ -From ab07574ef90fa510f293c37897d577066a88fe0d Mon Sep 17 00:00:00 2001 -From: Nathan Lynch <nathan_lynch@mentor.com> -Date: Tue, 25 Apr 2017 16:26:57 -0500 -Subject: [PATCH] BUILD_RUNTIME_BUG_ON vs gcc7 - -Avoid using LTTng's BUILD_RUNTIME_BUG_ON macro, as it appears to run -into a similar problem as Linux experienced with ilog2. - -See: -https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=474c90156c8dcc2fa815e6716cc9394d7930cb9c -https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72785 - -Upstream-Status: Pending -Signed-off-by: Nathan Lynch <nathan_lynch@mentor.com> ---- - lib/align.h | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/lib/align.h b/lib/align.h -index 5b91ae87410b..5e134cd485fe 100644 ---- a/lib/align.h -+++ b/lib/align.h -@@ -48,7 +48,7 @@ - */ - #define offset_align(align_drift, alignment) \ - ({ \ -- BUILD_RUNTIME_BUG_ON((alignment) == 0 \ -+ BUG_ON((alignment) == 0 \ - || ((alignment) & ((alignment) - 1))); \ - (((alignment) - (align_drift)) & ((alignment) - 1)); \ - }) -@@ -63,7 +63,7 @@ - */ - #define offset_align_floor(align_drift, alignment) \ - ({ \ -- BUILD_RUNTIME_BUG_ON((alignment) == 0 \ -+ BUG_ON((alignment) == 0 \ - || ((alignment) & ((alignment) - 1))); \ - (((align_drift) - (alignment)) & ((alignment) - 1)); \ - }) --- -2.9.3 - diff --git a/meta/recipes-kernel/lttng/lttng-modules/Makefile-Do-not-fail-if-CONFIG_TRACEPOINTS-is-not-en.patch b/meta/recipes-kernel/lttng/lttng-modules/Makefile-Do-not-fail-if-CONFIG_TRACEPOINTS-is-not-en.patch deleted file mode 100644 index e411242272..0000000000 --- a/meta/recipes-kernel/lttng/lttng-modules/Makefile-Do-not-fail-if-CONFIG_TRACEPOINTS-is-not-en.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 1b0e574d680101105a6c1e8931c78824f5a97a42 Mon Sep 17 00:00:00 2001 -From: Otavio Salvador <otavio@ossystems.com.br> -Date: Mon, 5 Sep 2016 17:08:56 +0000 -Subject: [PATCH] Makefile: Do not fail if CONFIG_TRACEPOINTS is not enabled -Organization: O.S. Systems Software LTDA. - -The lttng-modules are being pulled by the tools-profile image feature, -however, not every kernel has the CONFIG_TRACEPOINTS feature enabled. - -This change makes the build do not fail when CONFIG_TRACEPOINTS is not -available, allowing it to be kept being pulled by default. - -Upstream-Status: Inappropriate [embedded specific] - -Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> ---- - Makefile | 9 +++++---- - 1 file changed, 5 insertions(+), 4 deletions(-) - -diff --git a/Makefile b/Makefile -index 8602649..75550cc 100644 ---- a/Makefile -+++ b/Makefile -@@ -8,10 +8,7 @@ ifneq ($(KERNELRELEASE),) - # and defines the modules to be built. - - ifdef CONFIG_LOCALVERSION # Check if dot-config is included. -- ifeq ($(CONFIG_TRACEPOINTS),) -- $(error The option CONFIG_TRACEPOINTS needs to be enabled in your kernel configuration) -- endif # CONFIG_TRACEPOINTS -- endif # ifdef CONFIG_LOCALVERSION -+ ifneq ($(CONFIG_TRACEPOINTS),) - - TOP_LTTNG_MODULES_DIR := $(shell dirname $(lastword $(MAKEFILE_LIST))) - -@@ -94,6 +91,10 @@ ifneq ($(KERNELRELEASE),) - obj-$(CONFIG_LTTNG) += lib/ - obj-$(CONFIG_LTTNG) += tests/ - -+ else -+ $(warning The option CONFIG_TRACEPOINTS needs to be enabled in your kernel configuration) -+ endif # CONFIG_TRACEPOINTS -+ endif # ifdef CONFIG_LOCALVERSION - else # KERNELRELEASE - - # This part of the Makefile is used when the 'make' command is runned in the --- -2.1.4 - diff --git a/meta/recipes-kernel/lttng/lttng-modules_2.10.8.bb b/meta/recipes-kernel/lttng/lttng-modules_2.10.8.bb deleted file mode 100644 index 15e75e51c9..0000000000 --- a/meta/recipes-kernel/lttng/lttng-modules_2.10.8.bb +++ /dev/null @@ -1,45 +0,0 @@ -SECTION = "devel" -SUMMARY = "Linux Trace Toolkit KERNEL MODULE" -DESCRIPTION = "The lttng-modules 2.0 package contains the kernel tracer modules" -LICENSE = "LGPLv2.1 & GPLv2 & MIT" -LIC_FILES_CHKSUM = "file://LICENSE;md5=c4613d1f8a9587bd7b366191830364b3 \ - file://gpl-2.0.txt;md5=751419260aa954499f7abaabaa882bbe \ - file://lgpl-2.1.txt;md5=243b725d71bb5df4a1e5920b344b86ad \ - " - -inherit module - -COMPATIBLE_HOST = '(x86_64|i.86|powerpc|aarch64|mips|nios2|arm|riscv).*-linux' - -#https://lttng.org/files/lttng-modules/lttng-modules-2.10.7.tar.bz2 -SRC_URI = "https://lttng.org/files/${BPN}/${BPN}-${PV}.tar.bz2 \ - file://Makefile-Do-not-fail-if-CONFIG_TRACEPOINTS-is-not-en.patch \ - file://BUILD_RUNTIME_BUG_ON-vs-gcc7.patch \ - file://0001-Fix-signal-Distinguish-between-kernel_siginfo-and-si.patch \ - file://0002-Fix-signal-Remove-SEND_SIG_FORCED-v4.20.patch \ - file://0003-Fix-ext4-adjust-reserved-cluster-count-when-removing.patch \ - file://0004-Fix-timer-instrumentation-for-RHEL-7.6.patch \ - file://0005-Fix-Remove-type-argument-from-access_ok-function-v5..patch \ - file://0006-Fix-Replace-pointer-values-with-task-tk_pid-and-rpc_.patch \ - file://0007-Fix-SUNRPC-Simplify-defining-common-RPC-trace-events.patch \ - file://0008-Fix-btrfs-Remove-fsid-metadata_fsid-fields-from-btrf.patch \ - file://0009-Cleanup-tp-mempool-Remove-logically-dead-code.patch \ - " - -SRC_URI[md5sum] = "54bd9fca61487bbec1b3fca2f2213c98" -SRC_URI[sha256sum] = "fe1d269bca723e8948af871c322c37d3900e647cdc5eb3efbe821e434beee44c" - -export INSTALL_MOD_DIR="kernel/lttng-modules" - -EXTRA_OEMAKE += "KERNELDIR='${STAGING_KERNEL_DIR}'" - -do_install_append() { - # Delete empty directories to avoid QA failures if no modules were built - find ${D}/${nonarch_base_libdir} -depth -type d -empty -exec rmdir {} \; -} - -python do_package_prepend() { - if not os.path.exists(os.path.join(d.getVar('D'), d.getVar('nonarch_base_libdir')[1:], 'modules')): - bb.warn("%s: no modules were created; this may be due to CONFIG_TRACEPOINTS not being enabled in your kernel." % d.getVar('PN')) -} - diff --git a/meta/recipes-kernel/lttng/lttng-modules_2.13.12.bb b/meta/recipes-kernel/lttng/lttng-modules_2.13.12.bb new file mode 100644 index 0000000000..95d5e2d615 --- /dev/null +++ b/meta/recipes-kernel/lttng/lttng-modules_2.13.12.bb @@ -0,0 +1,45 @@ +SECTION = "devel" +SUMMARY = "Linux Trace Toolkit KERNEL MODULE" +DESCRIPTION = "The lttng-modules 2.0 package contains the kernel tracer modules" +HOMEPAGE = "https://lttng.org/" +LICENSE = "LGPL-2.1-only & GPL-2.0-only & MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=0464cff101a009c403cd2ed65d01d4c4" + +inherit module + +include lttng-platforms.inc + +SRC_URI = "https://lttng.org/files/${BPN}/${BPN}-${PV}.tar.bz2 \ + file://0001-Fix-ASoC-snd_doc_dapm-on-linux-6.9-rc1.patch \ + file://0002-Fix-ASoC-add-component-to-set_bias_level-events-in-l.patch \ + file://0003-Fix-mm_compaction_migratepages-changed-in-linux-6.9-.patch \ + file://0004-Fix-dev_base_lock-removed-in-linux-6.9-rc1.patch \ + " + +# Use :append here so that the patch is applied also when using devupstream +SRC_URI:append = " file://0001-src-Kbuild-change-missing-CONFIG_TRACEPOINTS-to-warn.patch" + +SRC_URI[sha256sum] = "d85fcb66c7bd31003ab8735e8c77700e5e4f417b4c22fe1f20112cf435abad79" + +export INSTALL_MOD_DIR="kernel/lttng-modules" + +EXTRA_OEMAKE += "KERNELDIR='${STAGING_KERNEL_DIR}'" + +MODULES_MODULE_SYMVERS_LOCATION = "src" + +do_install:append() { + # Delete empty directories to avoid QA failures if no modules were built + if [ -d ${D}/${nonarch_base_libdir} ]; then + find ${D}/${nonarch_base_libdir} -depth -type d -empty -exec rmdir {} \; + fi +} + +python do_package:prepend() { + if not os.path.exists(os.path.join(d.getVar('D'), d.getVar('nonarch_base_libdir')[1:], 'modules')): + bb.warn("%s: no modules were created; this may be due to CONFIG_TRACEPOINTS not being enabled in your kernel." % d.getVar('PN')) +} + +BBCLASSEXTEND = "devupstream:target" +SRC_URI:class-devupstream = "git://git.lttng.org/lttng-modules;branch=stable-2.13;protocol=https" +SRCREV:class-devupstream = "7584cfc04914cb0842a986e9808686858b9c8630" +SRCREV_FORMAT ?= "lttng_git" diff --git a/meta/recipes-kernel/lttng/lttng-platforms.inc b/meta/recipes-kernel/lttng/lttng-platforms.inc new file mode 100644 index 0000000000..900e36df82 --- /dev/null +++ b/meta/recipes-kernel/lttng/lttng-platforms.inc @@ -0,0 +1,21 @@ +# +# Whether the platform supports kernel tracing +# +LTTNGMODULES = "lttng-modules" +LTTNGMODULES:arc = "" +LTTNGMODULES:riscv64 = "" + +COMPATIBLE_HOST:riscv64:pn-lttng-modules = "null" +COMPATIBLE_HOST:arc:pn-lttng-modules = "null" + +# Whether the platform supports userspace tracing +# lttng-ust uses sched_getcpu() which is not there on for some platforms. +LTTNGUST = "lttng-ust" +LTTNGUST:arc = "" + +COMPATIBLE_HOST:arc:pn-lttng-ust = "null" + +# Whether the platform supports lttng-tools +# lttng-tools requires SYS_ppoll and SYS_pselect6 which are not supported on riscv32. +# It's also turned off for riscv32 in meta-riscv. See https://github.com/riscv/meta-riscv/blob/master/conf/layer.conf +COMPATIBLE_HOST:riscv32:pn-lttng-tools = "null" diff --git a/meta/recipes-kernel/lttng/lttng-tools/0001-Fix-rotation-destroy-flush-fix-session-daemon-abort-.patch b/meta/recipes-kernel/lttng/lttng-tools/0001-Fix-rotation-destroy-flush-fix-session-daemon-abort-.patch new file mode 100644 index 0000000000..3286dfb5c1 --- /dev/null +++ b/meta/recipes-kernel/lttng/lttng-tools/0001-Fix-rotation-destroy-flush-fix-session-daemon-abort-.patch @@ -0,0 +1,56 @@ +From 6b45c5f80d20e7bbf3d98c1fa17d2cf8716af3bb Mon Sep 17 00:00:00 2001 +From: Xiangyu Chen <xiangyu.chen@windriver.com> +Date: Mon, 25 Mar 2024 18:20:14 +0800 +Subject: [PATCH] Fix: rotation-destroy-flush: fix session daemon abort if no + kernel module present + +Testing rotation-destroy-flush when no lttng kernel modules present, it would +be failed with error message: + + Error: Unable to load required module lttng-ring-buffer-client-discard + not ok 1 - Start session daemon + Failed test 'Start session daemon' + not ok 2 - Create session rotation_destroy_flush in -o /tmp/tmp.test_rot ... + ... + +This because test script that sets the LTTNG_ABORT_ON_ERROR environment +variable. It's this environment variable that causes the sessiond to handle the +kernel module loading failure as an abort rather than a warning. + +Using "check_skip_kernel_test" to detect whether the kernel module fails to +load is expected or not. If the failure is expected, the script won't set that +environment variable any more. + +Fixes: 3a174400 +("tests:add check_skip_kernel_test to check root user and lttng kernel modules") + +Upstream-Status: Submitted [https://review.lttng.org/c/lttng-tools/+/12155] + +Change-Id: I371e9ba717613e2940186f710cf3cccd35baed6c +Signed-off-by: Xiangyu Chen <xiangyu.chen@windriver.com> +--- + .../ust/rotation-destroy-flush/test_rotation_destroy_flush | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/tests/regression/ust/rotation-destroy-flush/test_rotation_destroy_flush b/tests/regression/ust/rotation-destroy-flush/test_rotation_destroy_flush +index 669bcbc43..64161768f 100755 +--- a/tests/regression/ust/rotation-destroy-flush/test_rotation_destroy_flush ++++ b/tests/regression/ust/rotation-destroy-flush/test_rotation_destroy_flush +@@ -23,11 +23,11 @@ SIZE_LIMIT=$PAGE_SIZE + NR_ITER=10 + NUM_TESTS=$((15*$NR_ITER)) + +-# Ensure the daemons invoke abort on error. +-export LTTNG_ABORT_ON_ERROR=1 +- + source $TESTDIR/utils/utils.sh + ++# Ensure the daemons invoke abort on error. ++check_skip_kernel_test || export LTTNG_ABORT_ON_ERROR=1 ++ + # MUST set TESTDIR before calling those functions + function run_app() + { +-- +2.25.1 + diff --git a/meta/recipes-kernel/lttng/lttng-tools/0001-Fix-tests-link-libpause_consumer-on-liblttng-ctl.patch b/meta/recipes-kernel/lttng/lttng-tools/0001-Fix-tests-link-libpause_consumer-on-liblttng-ctl.patch deleted file mode 100644 index df18dc842b..0000000000 --- a/meta/recipes-kernel/lttng/lttng-tools/0001-Fix-tests-link-libpause_consumer-on-liblttng-ctl.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 7244eac44be929fabd6ed1333f96929ef8da564f Mon Sep 17 00:00:00 2001 -From: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com> -Date: Tue, 19 Mar 2019 17:56:49 +0000 -Subject: [PATCH] fix: tests: link libpause_consumer on liblttng-ctl - -This preload test library uses symbols from liblttng-ctl which are -resolved when preloaded by GLIBC but not by MUSL. - -Upstream-Status: Accepted [f667fbd7f8b9512f9943edb2597c226fcc424ee9] -Backported to 2.11 and 2.10. - -Signed-off-by: Michael Jeanson <mjeanson@efficios.com> ---- - tests/regression/tools/notification/Makefile.am | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/tests/regression/tools/notification/Makefile.am b/tests/regression/tools/notification/Makefile.am -index 41adc69..a352bb8 100644 ---- a/tests/regression/tools/notification/Makefile.am -+++ b/tests/regression/tools/notification/Makefile.am -@@ -20,7 +20,10 @@ FORCE_SHARED_LIB_OPTIONS = -module -shared -avoid-version \ - -rpath $(abs_builddir) - - libpause_consumer_la_SOURCES = consumer_testpoints.c --libpause_consumer_la_LIBADD = $(top_builddir)/src/common/libcommon.la $(DL_LIBS) -+libpause_consumer_la_LIBADD = \ -+ $(top_builddir)/src/common/libcommon.la \ -+ $(top_builddir)/src/lib/lttng-ctl/liblttng-ctl.la \ -+ $(DL_LIBS) - libpause_consumer_la_LDFLAGS = $(FORCE_SHARED_LIB_OPTIONS) - noinst_LTLIBRARIES = libpause_consumer.la - --- -2.17.1 - diff --git a/meta/recipes-kernel/lttng/lttng-tools/0001-compat-Define-off64_t-as-off_t-on-linux.patch b/meta/recipes-kernel/lttng/lttng-tools/0001-compat-Define-off64_t-as-off_t-on-linux.patch new file mode 100644 index 0000000000..4e21d1e9f1 --- /dev/null +++ b/meta/recipes-kernel/lttng/lttng-tools/0001-compat-Define-off64_t-as-off_t-on-linux.patch @@ -0,0 +1,74 @@ +From 74b3844737b03492756b4f896c938b504b069f14 Mon Sep 17 00:00:00 2001 +From: Jérémie Galarneau <jeremie.galarneau@efficios.com> +Date: Tue, 17 Jan 2023 16:57:35 -0500 +Subject: [PATCH] compat: off64_t is not defined by musl + +This helps compile with latest musl, where off64_t is not defined unless +_LARGEFILE64_SOURCE is defined. On glibc, _LARGEFILE64_SOURCE is defined +if _GNU_SOURCE is defined, so the problem is only seen with musl. + +Since the project uses AC_SYS_LARGEFILE, which from the autoconf doc: +"arrange for 64-bit file offsets, known as large-file support." + +As such, it is safe to assume off_t is 64-bit wide. This is checked by a +static_assert to catch any platform where autoconf would let a 32-bit +off_t slip. + +Upstream-Status: Submitted [https://review.lttng.org/c/lttng-tools/+/9268] +Reported-by: Khem Raj <raj.khem@gmail.com> +Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com> +Change-Id: If2c6007a8c85bc3f3065002af8a7538b882fb4a8 +--- + +--- a/src/common/compat/compat-fcntl.c ++++ b/src/common/compat/compat-fcntl.c +@@ -8,14 +8,17 @@ + #define _LGPL_SOURCE + #include <common/compat/fcntl.h> + #include <common/macros.h> ++#include <common/bug.h> ++#include <stdint.h> + #include <unistd.h> + + #ifdef __linux__ + + LTTNG_HIDDEN +-int compat_sync_file_range(int fd, off64_t offset, off64_t nbytes, ++int compat_sync_file_range(int fd, off_t offset, off_t nbytes, + unsigned int flags) + { ++ LTTNG_BUILD_BUG_ON(sizeof(off_t) != sizeof(int64_t)); + #ifdef HAVE_SYNC_FILE_RANGE + return sync_file_range(fd, offset, nbytes, flags); + #else +--- a/src/common/compat/fcntl.h ++++ b/src/common/compat/fcntl.h +@@ -13,16 +13,12 @@ + + #include <common/compat/errno.h> + +-#if (defined(__CYGWIN__)) +-typedef long long off64_t; +-#endif +- + #if (defined(__FreeBSD__) || defined(__sun__)) + typedef off64_t loff_t; + #endif + + #ifdef __linux__ +-extern int compat_sync_file_range(int fd, off64_t offset, off64_t nbytes, ++extern int compat_sync_file_range(int fd, off_t offset, off_t nbytes, + unsigned int flags); + #define lttng_sync_file_range(fd, offset, nbytes, flags) \ + compat_sync_file_range(fd, offset, nbytes, flags) +@@ -37,8 +33,8 @@ extern int compat_sync_file_range(int fd + #define SYNC_FILE_RANGE_WAIT_BEFORE 0 + #define SYNC_FILE_RANGE_WRITE 0 + +-static inline int lttng_sync_file_range(int fd, off64_t offset, +- off64_t nbytes, unsigned int flags) ++static inline int lttng_sync_file_range(int fd, off_t offset, ++ off_t nbytes, unsigned int flags) + { + return -ENOSYS; + } diff --git a/meta/recipes-kernel/lttng/lttng-tools/0001-tests-add-check_skip_kernel_test-to-check-root-user-.patch b/meta/recipes-kernel/lttng/lttng-tools/0001-tests-add-check_skip_kernel_test-to-check-root-user-.patch new file mode 100644 index 0000000000..2671a1908e --- /dev/null +++ b/meta/recipes-kernel/lttng/lttng-tools/0001-tests-add-check_skip_kernel_test-to-check-root-user-.patch @@ -0,0 +1,1246 @@ +From cf558f802b259a33605fe0ede4d74ae2ff6be699 Mon Sep 17 00:00:00 2001 +From: Xiangyu Chen <xiangyu.chen@windriver.com> +Date: Mon, 12 Feb 2024 09:23:54 -0500 +Subject: [PATCH] tests: add check_skip_kernel_test to check root user and + lttng kernel modules +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The current tests will run both userspace and kernel testing. Some of +use cases only use lttng for one kind of tracing on an embedded +device (e.g. userspace), so in this scenario, the kernel modules might +not install to target rootfs, the test cases would be fail and exit. + +Add LTTNG_TOOLS_DISABLE_KERNEL_TESTS to skip the lttng kernel features +test, this flag can be set via "make": + + make check LTTNG_TOOLS_DISABLE_KERNEL_TESTS=1 + +When this flag was set, all kernel related testcases would be marked as +SKIP in result. + +Since the the LTTNG_TOOLS_DISABLE_KERNEL_TESTS was checked in function +check_skip_kernel_test, lots of testcases also need to check root +permission, so merging the root permission checking into +check_skip_kernel_test. + +Upstream-Status: Backport from +[https://git.lttng.org/?p=lttng-tools.git;a=commit;h=3a1744008331a0604479d3d7461f77056fad3a64] + +Change-Id: I49a1f642a9869c21a69e0186c296fd917bd7b525 +Signed-off-by: Xiangyu Chen <xiangyu.chen@windriver.com> +Signed-off-by: Michael Jeanson <mjeanson@efficios.com> +Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com> +--- + tests/destructive/metadata-regeneration | 8 +---- + tests/perf/test_perf_raw.in | 8 +---- + tests/regression/kernel/test_all_events | 8 +---- + tests/regression/kernel/test_callstack | 8 +---- + tests/regression/kernel/test_channel | 8 +---- + tests/regression/kernel/test_clock_override | 8 +---- + tests/regression/kernel/test_event_basic | 8 +---- + tests/regression/kernel/test_kernel_function | 8 +---- + tests/regression/kernel/test_lttng_logger | 8 +---- + tests/regression/kernel/test_ns_contexts | 8 +---- + .../regression/kernel/test_ns_contexts_change | 9 +---- + .../kernel/test_rotation_destroy_flush | 8 +---- + .../regression/kernel/test_select_poll_epoll | 8 +---- + tests/regression/kernel/test_syscall | 8 +---- + tests/regression/kernel/test_userspace_probe | 8 +---- + tests/regression/tools/clear/test_kernel | 8 +---- + .../tools/filtering/test_invalid_filter | 8 +---- + .../tools/filtering/test_unsupported_op | 8 +---- + .../tools/filtering/test_valid_filter | 8 +---- + tests/regression/tools/health/test_health.sh | 10 ++---- + tests/regression/tools/health/test_thread_ok | 9 +---- + tests/regression/tools/live/test_kernel | 10 +++--- + tests/regression/tools/live/test_lttng_kernel | 8 +---- + tests/regression/tools/metadata/test_kernel | 8 +---- + .../test_notification_kernel_buffer_usage | 36 +++++++++---------- + .../test_notification_kernel_capture | 23 ++++++------ + .../test_notification_kernel_error | 23 ++++++------ + .../test_notification_kernel_instrumentation | 23 ++++++------ + .../test_notification_kernel_syscall | 19 +++++----- + .../test_notification_kernel_userspace_probe | 20 +++++------ + .../notification/test_notification_multi_app | 14 +++----- + ...test_notification_notifier_discarded_count | 9 +++-- + .../tools/regen-metadata/test_kernel | 8 +---- + .../tools/regen-statedump/test_kernel | 8 +---- + tests/regression/tools/rotation/test_kernel | 8 +---- + tests/regression/tools/snapshots/test_kernel | 8 +---- + .../tools/snapshots/test_kernel_streaming | 8 +---- + .../streaming/test_high_throughput_limits | 8 +---- + tests/regression/tools/streaming/test_kernel | 8 +---- + .../tools/tracker/test_event_tracker | 8 +---- + .../tools/trigger/test_add_trigger_cli | 12 ++----- + .../tools/trigger/test_list_triggers_cli | 26 +++++--------- + .../tools/wildcard/test_event_wildcard | 8 +---- + .../test_relayd_working_directory | 4 +-- + .../ust/namespaces/test_ns_contexts_change | 7 +--- + tests/regression/ust/test_event_perf | 8 +---- + tests/utils/utils.sh | 35 ++++++++++++++++++ + 47 files changed, 166 insertions(+), 363 deletions(-) + +diff --git a/tests/destructive/metadata-regeneration b/tests/destructive/metadata-regeneration +index b81e7af32..36b130d17 100755 +--- a/tests/destructive/metadata-regeneration ++++ b/tests/destructive/metadata-regeneration +@@ -185,19 +185,13 @@ function test_ust_streaming () + rm -f ${file_sync_before_last} + } + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- + if ! destructive_tests_enabled ; then + echo 'You need to set the LTTNG_ENABLE_DESTRUCTIVE_TESTS to "will-break-my-system" as argument to run this test' + echo 'Moreover, please make sure that ntp is not running while executing this test' + exit 0 + fi + +-skip $isroot "Root access is needed. Skipping all tests." $NUM_TESTS || ++check_skip_kernel_test $NUM_TESTS "Skipping all tests." || + { + start_lttng_relayd "-o $TRACE_PATH" + start_lttng_sessiond +diff --git a/tests/perf/test_perf_raw.in b/tests/perf/test_perf_raw.in +index f293ccd71..d35529a87 100644 +--- a/tests/perf/test_perf_raw.in ++++ b/tests/perf/test_perf_raw.in +@@ -137,12 +137,6 @@ function test_kernel_raw() + rm -rf $TRACE_PATH + } + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- + # MUST set TESTDIR before calling those functions + plan_tests $NUM_TESTS + +@@ -154,7 +148,7 @@ have_libpfm + + test_ust_raw + +-skip $isroot "Root access is needed for kernel testing, skipping." 9 || ++check_skip_kernel_test 9 || + { + modprobe lttng-test + test_kernel_raw +diff --git a/tests/regression/kernel/test_all_events b/tests/regression/kernel/test_all_events +index 2e20888df..044f9b65f 100755 +--- a/tests/regression/kernel/test_all_events ++++ b/tests/regression/kernel/test_all_events +@@ -43,13 +43,7 @@ plan_tests $NUM_TESTS + + print_test_banner "$TEST_DESC" + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- +-skip $isroot "Root access is needed. Skipping all tests." $NUM_TESTS || ++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." || + { + validate_lttng_modules_present + start_lttng_sessiond +diff --git a/tests/regression/kernel/test_callstack b/tests/regression/kernel/test_callstack +index a4477fd7c..d8d6b5e0f 100755 +--- a/tests/regression/kernel/test_callstack ++++ b/tests/regression/kernel/test_callstack +@@ -134,13 +134,7 @@ plan_tests $NUM_TESTS + + print_test_banner "$TEST_DESC" + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- +-skip $isroot "Root access is needed. Skipping all tests." "$NUM_TESTS" || ++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." || + { + validate_lttng_modules_present + start_lttng_sessiond +diff --git a/tests/regression/kernel/test_channel b/tests/regression/kernel/test_channel +index 9cc74c4e8..4c377bd2a 100755 +--- a/tests/regression/kernel/test_channel ++++ b/tests/regression/kernel/test_channel +@@ -47,13 +47,7 @@ function test_channel_buffer_too_large() + plan_tests $NUM_TESTS + print_test_banner "$TEST_DESC" + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- +-skip $isroot "Root access is needed. Skipping all tests." $NUM_TESTS || ++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." || + { + start_lttng_sessiond + +diff --git a/tests/regression/kernel/test_clock_override b/tests/regression/kernel/test_clock_override +index 72892898b..48a3f926a 100755 +--- a/tests/regression/kernel/test_clock_override ++++ b/tests/regression/kernel/test_clock_override +@@ -172,13 +172,7 @@ TESTS=( + TEST_COUNT=${#TESTS[@]} + i=0 + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- +-skip $isroot "Root access is needed. Skipping all tests." $NUM_TESTS || ++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." || + { + validate_lttng_modules_present + trap signal_cleanup SIGTERM SIGINT +diff --git a/tests/regression/kernel/test_event_basic b/tests/regression/kernel/test_event_basic +index ac9ec0549..387e2f733 100755 +--- a/tests/regression/kernel/test_event_basic ++++ b/tests/regression/kernel/test_event_basic +@@ -73,13 +73,7 @@ plan_tests $NUM_TESTS + + print_test_banner "$TEST_DESC" + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- +-skip $isroot "Root access is needed. Skipping all tests." $NUM_TESTS || ++check_skip_kernel_test $NUM_TESTS "Skipping all tests." || + { + validate_lttng_modules_present + start_lttng_sessiond +diff --git a/tests/regression/kernel/test_kernel_function b/tests/regression/kernel/test_kernel_function +index b1d5491fc..ea16cdeef 100755 +--- a/tests/regression/kernel/test_kernel_function ++++ b/tests/regression/kernel/test_kernel_function +@@ -43,13 +43,7 @@ plan_tests $NUM_TESTS + + print_test_banner "$TEST_DESC" + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- +-skip $isroot "Root access is needed. Skipping all tests." $NUM_TESTS || ++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." || + { + start_lttng_sessiond_notap + validate_lttng_modules_present +diff --git a/tests/regression/kernel/test_lttng_logger b/tests/regression/kernel/test_lttng_logger +index b8f7ded82..00eaae823 100755 +--- a/tests/regression/kernel/test_lttng_logger ++++ b/tests/regression/kernel/test_lttng_logger +@@ -110,13 +110,7 @@ plan_tests $NUM_TESTS + + print_test_banner "$TEST_DESC" + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- +-skip $isroot "Root access is needed. Skipping all tests." $NUM_TESTS || ++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." || + { + validate_lttng_modules_present + start_lttng_sessiond +diff --git a/tests/regression/kernel/test_ns_contexts b/tests/regression/kernel/test_ns_contexts +index 0c8718d78..59e2568f6 100755 +--- a/tests/regression/kernel/test_ns_contexts ++++ b/tests/regression/kernel/test_ns_contexts +@@ -108,13 +108,7 @@ plan_tests $NUM_TESTS + print_test_banner "$TEST_DESC" + + +-isroot=0 +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-fi +- +-skip $isroot "Root access is needed. Skipping all tests." "$NUM_TESTS" && exit 0 +- ++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." && exit 0 + + system_has_ns=0 + if [ -d "/proc/$$/ns" ]; then +diff --git a/tests/regression/kernel/test_ns_contexts_change b/tests/regression/kernel/test_ns_contexts_change +index 42a61276b..3f5e4eeab 100755 +--- a/tests/regression/kernel/test_ns_contexts_change ++++ b/tests/regression/kernel/test_ns_contexts_change +@@ -162,14 +162,7 @@ plan_tests $NUM_TESTS + + print_test_banner "$TEST_DESC" + +- +-isroot=0 +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-fi +- +-skip $isroot "Root access is needed. Skipping all tests." "$NUM_TESTS" && exit 0 +- ++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." && exit 0 + + system_has_ns=0 + if [ -d "/proc/$$/ns" ]; then +diff --git a/tests/regression/kernel/test_rotation_destroy_flush b/tests/regression/kernel/test_rotation_destroy_flush +index cb773d7df..0af514b49 100755 +--- a/tests/regression/kernel/test_rotation_destroy_flush ++++ b/tests/regression/kernel/test_rotation_destroy_flush +@@ -120,13 +120,7 @@ TESTS=( + TEST_COUNT=${#TESTS[@]} + i=0 + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- +-skip $isroot "Root access is needed. Skipping all tests." $NUM_TESTS || ++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." || + { + validate_lttng_modules_present + trap signal_cleanup SIGTERM SIGINT +diff --git a/tests/regression/kernel/test_select_poll_epoll b/tests/regression/kernel/test_select_poll_epoll +index d8245a0e7..20f0ef0ae 100755 +--- a/tests/regression/kernel/test_select_poll_epoll ++++ b/tests/regression/kernel/test_select_poll_epoll +@@ -374,13 +374,7 @@ if test $? != 0; then + exit 0 + fi + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- +-skip $isroot "Root access is needed. Skipping all tests." $NUM_TESTS || ++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." || + { + validate_lttng_modules_present + +diff --git a/tests/regression/kernel/test_syscall b/tests/regression/kernel/test_syscall +index 401a18a8d..219d94703 100755 +--- a/tests/regression/kernel/test_syscall ++++ b/tests/regression/kernel/test_syscall +@@ -664,13 +664,7 @@ plan_tests $NUM_TESTS + + print_test_banner "$TEST_DESC" + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- +-skip $isroot "Root access is needed. Skipping all tests." $NUM_TESTS || ++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." || + { + validate_lttng_modules_present + start_lttng_sessiond +diff --git a/tests/regression/kernel/test_userspace_probe b/tests/regression/kernel/test_userspace_probe +index 1091ee65e..5d984d666 100755 +--- a/tests/regression/kernel/test_userspace_probe ++++ b/tests/regression/kernel/test_userspace_probe +@@ -815,13 +815,7 @@ fi + plan_tests $NUM_TESTS + print_test_banner "$TEST_DESC" + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- +-skip $isroot "Root access is needed. Skipping all tests." $NUM_TESTS || ++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." || + { + validate_lttng_modules_present + start_lttng_sessiond +diff --git a/tests/regression/tools/clear/test_kernel b/tests/regression/tools/clear/test_kernel +index 06fb1c368..48250a742 100755 +--- a/tests/regression/tools/clear/test_kernel ++++ b/tests/regression/tools/clear/test_kernel +@@ -536,12 +536,6 @@ plan_tests $NUM_TESTS + + print_test_banner "$TEST_DESC" + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- + streaming_tests=(test_kernel_streaming + test_kernel_streaming_rotate_clear + test_kernel_streaming_clear_rotate +@@ -563,7 +557,7 @@ snapshot_tests=(test_kernel_streaming_snapshot + test_kernel_local_snapshot + ) + +-skip $isroot "Root access is needed. Skipping all kernel streaming tests." $NUM_TESTS || ++check_skip_kernel_test "$NUM_TESTS" "Skipping kernel streaming tests." || + { + trap signal_cleanup SIGTERM SIGINT + +diff --git a/tests/regression/tools/filtering/test_invalid_filter b/tests/regression/tools/filtering/test_invalid_filter +index 7d9e524d9..8435e5546 100755 +--- a/tests/regression/tools/filtering/test_invalid_filter ++++ b/tests/regression/tools/filtering/test_invalid_filter +@@ -168,13 +168,7 @@ done + + test_bytecode_limit -u + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- +-skip $isroot "Root access is needed. Skipping all kernel invalid filter tests." $NUM_KERNEL_TESTS || ++check_skip_kernel_test "$NUM_KERNEL_TESTS" "Skipping kernel invalid filter tests." || + { + diag "Test kernel filters" + i=0 +diff --git a/tests/regression/tools/filtering/test_unsupported_op b/tests/regression/tools/filtering/test_unsupported_op +index 299247a3c..91eb86d21 100755 +--- a/tests/regression/tools/filtering/test_unsupported_op ++++ b/tests/regression/tools/filtering/test_unsupported_op +@@ -103,13 +103,7 @@ while [ "$i" -lt "$OP_COUNT" ]; do + let "i++" + done + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- +-skip $isroot "Root access is needed. Skipping all kernel unsupported filter operations tests." $NUM_KERNEL_TESTS || ++check_skip_kernel_test $NUM_KERNEL_TESTS "Skipping kernel unsupported filter operations tests." || + { + diag "Test kernel unsupported filter operations" + +diff --git a/tests/regression/tools/filtering/test_valid_filter b/tests/regression/tools/filtering/test_valid_filter +index e76ffa25f..1ba7c79bb 100755 +--- a/tests/regression/tools/filtering/test_valid_filter ++++ b/tests/regression/tools/filtering/test_valid_filter +@@ -1452,13 +1452,7 @@ KERNEL_FILTERS=( + + IFS=$OLDIFS + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- +-skip $isroot "Root access is needed. Skipping all kernel valid filter tests." $NUM_KERNEL_TESTS || ++check_skip_kernel_test "$NUM_KERNEL_TESTS" "Skipping kernel valid filter tests." || + { + diag "Test kernel valid filters" + +diff --git a/tests/regression/tools/health/test_health.sh b/tests/regression/tools/health/test_health.sh +index b3d6419d2..68716e6b9 100644 +--- a/tests/regression/tools/health/test_health.sh ++++ b/tests/regression/tools/health/test_health.sh +@@ -82,7 +82,7 @@ function test_health + diag "With UST consumer daemons" + enable_ust_lttng_event_ok $SESSION_NAME $UST_EVENT_NAME $CHANNEL_NAME + +- skip $isroot "Root access is needed. Skipping kernel consumer health check test." "1" || ++ check_skip_kernel_test "1" "Skipping kernel consumer health check test." || + { + diag "With kernel consumer daemon" + lttng_enable_kernel_event $SESSION_NAME $KERNEL_EVENT_NAME $CHANNEL_NAME +@@ -113,7 +113,7 @@ function test_health + + + if [ ${test_needs_root} -eq 1 ]; then +- skip ${isroot} "Root access needed for test \"${test_thread_name}\"." "1" || ++ check_skip_kernel_test "1" "Skipping \"${test_thread_name}\"." || + { + report_errors "${test_thread_error_string}" "${test_relayd}" + } +@@ -276,12 +276,6 @@ STDERR_PATH=$(mktemp --tmpdir tmp.test_health_stderr_path.XXXXXX) + TRACE_PATH=$(mktemp --tmpdir -d tmp.test_health_trace_path.XXXXXX) + HEALTH_PATH=$(mktemp --tmpdir -d tmp.test_health_trace_path.XXXXXX) + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- + THREAD_COUNT=${#THREAD[@]} + i=0 + while [ "$i" -lt "$THREAD_COUNT" ]; do +diff --git a/tests/regression/tools/health/test_thread_ok b/tests/regression/tools/health/test_thread_ok +index e84adb611..e5e23543f 100755 +--- a/tests/regression/tools/health/test_thread_ok ++++ b/tests/regression/tools/health/test_thread_ok +@@ -67,7 +67,7 @@ function test_thread_ok + $CURDIR/$HEALTH_CHECK_BIN > ${STDOUT_PATH} 2> ${STDERR_PATH} + report_errors + +- skip $isroot "Root access is needed. Skipping kernel consumer health check test." "5" || ++ check_skip_kernel_test "5" "Skipping kernel consumer health check test." || + { + diag "With kernel consumer daemon" + create_lttng_session_no_output $SESSION_NAME +@@ -115,13 +115,6 @@ STDERR_PATH=$(mktemp --tmpdir tmp.test_thread_ok_stderr_path.XXXXXX) + TRACE_PATH=$(mktemp --tmpdir -d tmp.test_thread_ok_trace_path.XXXXXX) + HEALTH_PATH=$(mktemp --tmpdir -d tmp.test_thread_ok_trace_path.XXXXXX) + +-# The manage kernel thread is only spawned if we are root +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- + test_thread_ok + + rm -rf ${HEALTH_PATH} +diff --git a/tests/regression/tools/live/test_kernel b/tests/regression/tools/live/test_kernel +index b622b5214..fdaa09f0d 100755 +--- a/tests/regression/tools/live/test_kernel ++++ b/tests/regression/tools/live/test_kernel +@@ -39,13 +39,11 @@ function clean_live_tracing() + rm -rf $TRACE_PATH + } + +-# Need root access for kernel tracing. +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- plan_skip_all "Root access is needed. Skipping all tests." ++check_skip_kernel_test && ++{ ++ plan_skip_all "Skipping all tests." + exit 0 +-fi ++} + + modprobe lttng-test + +diff --git a/tests/regression/tools/live/test_lttng_kernel b/tests/regression/tools/live/test_lttng_kernel +index a23d9373a..1b933648f 100755 +--- a/tests/regression/tools/live/test_lttng_kernel ++++ b/tests/regression/tools/live/test_lttng_kernel +@@ -45,13 +45,7 @@ function clean_live_tracing() + } + + # Need root access for kernel tracing. +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- +-skip $isroot "Root access is needed. Skipping all tests." $NUM_TESTS || ++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." || + { + modprobe lttng-test + +diff --git a/tests/regression/tools/metadata/test_kernel b/tests/regression/tools/metadata/test_kernel +index 57cace6ea..26e95d93a 100755 +--- a/tests/regression/tools/metadata/test_kernel ++++ b/tests/regression/tools/metadata/test_kernel +@@ -91,13 +91,7 @@ plan_tests $NUM_TESTS + print_test_banner "$TEST_DESC" + + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- +-skip $isroot "Root access is needed. Skipping all kernel metadata tests." $NUM_TESTS || ++check_skip_kernel_test "$NUM_TESTS" "Skipping kernel metadata tests." || + { + validate_lttng_modules_present + modprobe lttng-test +diff --git a/tests/regression/tools/notification/test_notification_kernel_buffer_usage b/tests/regression/tools/notification/test_notification_kernel_buffer_usage +index 76e69a77e..8fdaabb3e 100755 +--- a/tests/regression/tools/notification/test_notification_kernel_buffer_usage ++++ b/tests/regression/tools/notification/test_notification_kernel_buffer_usage +@@ -60,29 +60,27 @@ function test_buffer_usage_notification + wait $APP_PID 2> /dev/null + } + +-if [ "$(id -u)" == "0" ]; then +- +- validate_lttng_modules_present +- ++check_skip_kernel_test && ++{ ++ plan_skip_all "Skipping all tests." ++ rm -rf "$TEST_TMPDIR" ++ exit 0 ++} + +- modprobe lttng-test ++validate_lttng_modules_present + +- # Used on sessiond launch. +- LTTNG_SESSIOND_ENV_VARS="LTTNG_TESTPOINT_ENABLE=1 \ +- CONSUMER_PAUSE_PIPE_PATH=${TESTPOINT_PIPE_PATH} \ +- LD_PRELOAD=${TESTPOINT}" +- start_lttng_sessiond_notap ++modprobe lttng-test + +- test_buffer_usage_notification ++# Used on sessiond launch. ++LTTNG_SESSIOND_ENV_VARS="LTTNG_TESTPOINT_ENABLE=1 \ ++ CONSUMER_PAUSE_PIPE_PATH=${TESTPOINT_PIPE_PATH} \ ++ LD_PRELOAD=${TESTPOINT}" ++start_lttng_sessiond_notap + +- stop_lttng_sessiond_notap +- rmmod lttng-test ++test_buffer_usage_notification + +- rm -rf "${consumerd_pipe[@]}" 2> /dev/null +-else +- # Kernel tests are skipped. +- plan_tests $NUM_TESTS +- skip 0 "Root access is needed. Skipping all kernel notification tests." $NUM_TESTS +-fi ++stop_lttng_sessiond_notap ++rmmod lttng-test + ++rm -rf "${consumerd_pipe[@]}" 2> /dev/null + rm -rf "$TEST_TMPDIR" +diff --git a/tests/regression/tools/notification/test_notification_kernel_capture b/tests/regression/tools/notification/test_notification_kernel_capture +index 88f123d3d..0f8a2bc6f 100755 +--- a/tests/regression/tools/notification/test_notification_kernel_capture ++++ b/tests/regression/tools/notification/test_notification_kernel_capture +@@ -31,22 +31,21 @@ function test_basic_error_path + } + + +-if [ "$(id -u)" == "0" ]; then +- validate_lttng_modules_present ++check_skip_kernel_test && ++{ ++ plan_skip_all "Skipping all tests." ++ exit 0 ++} + +- modprobe lttng-test ++validate_lttng_modules_present + +- start_lttng_sessiond_notap ++modprobe lttng-test + +- test_basic_error_path ++start_lttng_sessiond_notap + +- stop_lttng_sessiond_notap +- rmmod lttng-test ++test_basic_error_path + +-else +- # Kernel tests are skipped. +- plan_tests $NUM_TESTS +- skip 0 "Root access is needed. Skipping all kernel notification tests." $NUM_TESTS +-fi ++stop_lttng_sessiond_notap ++rmmod lttng-test + + rm -f "$TESTAPP_STATE_PATH" +diff --git a/tests/regression/tools/notification/test_notification_kernel_error b/tests/regression/tools/notification/test_notification_kernel_error +index 80fe6e5b5..b757ec2b4 100755 +--- a/tests/regression/tools/notification/test_notification_kernel_error ++++ b/tests/regression/tools/notification/test_notification_kernel_error +@@ -30,23 +30,22 @@ function test_basic_error_path + wait $APP_PID 2> /dev/null + } + ++check_skip_kernel_test && ++{ ++ plan_skip_all "Skipping all tests." ++ exit 0 ++} + +-if [ "$(id -u)" == "0" ]; then +- validate_lttng_modules_present ++validate_lttng_modules_present + +- modprobe lttng-test ++modprobe lttng-test + +- start_lttng_sessiond_notap ++start_lttng_sessiond_notap + +- test_basic_error_path ++test_basic_error_path + +- stop_lttng_sessiond_notap +- rmmod lttng-test ++stop_lttng_sessiond_notap ++rmmod lttng-test + +-else +- # Kernel tests are skipped. +- plan_tests $NUM_TESTS +- skip 0 "Root access is needed. Skipping all kernel notification tests." $NUM_TESTS +-fi + + rm -f "$TESTAPP_STATE_PATH" +diff --git a/tests/regression/tools/notification/test_notification_kernel_instrumentation b/tests/regression/tools/notification/test_notification_kernel_instrumentation +index 90545a541..705f7703d 100755 +--- a/tests/regression/tools/notification/test_notification_kernel_instrumentation ++++ b/tests/regression/tools/notification/test_notification_kernel_instrumentation +@@ -28,22 +28,21 @@ function test_kernel_instrumentation_notification + wait $APP_PID 2> /dev/null + } + +-if [ "$(id -u)" == "0" ]; then +- validate_lttng_modules_present ++check_skip_kernel_test && ++{ ++ plan_skip_all "Skipping all tests." ++ exit 0 ++} + +- modprobe lttng-test ++validate_lttng_modules_present + +- start_lttng_sessiond_notap ++modprobe lttng-test + +- test_kernel_instrumentation_notification ++start_lttng_sessiond_notap + +- stop_lttng_sessiond_notap +- rmmod lttng-test ++test_kernel_instrumentation_notification + +-else +- # Kernel tests are skipped. +- plan_tests $NUM_TESTS +- skip 0 "Root access is needed. Skipping all kernel notification tests." $NUM_TESTS +-fi ++stop_lttng_sessiond_notap ++rmmod lttng-test + + rm -f "$TESTAPP_STATE_PATH" +diff --git a/tests/regression/tools/notification/test_notification_kernel_syscall b/tests/regression/tools/notification/test_notification_kernel_syscall +index d273cb55d..7fa235388 100755 +--- a/tests/regression/tools/notification/test_notification_kernel_syscall ++++ b/tests/regression/tools/notification/test_notification_kernel_syscall +@@ -31,19 +31,18 @@ function test_kernel_syscall_notification + wait $APP_PID 2> /dev/null + } + +-if [ "$(id -u)" == "0" ]; then +- validate_lttng_modules_present ++check_skip_kernel_test && ++{ ++ plan_skip_all "Skipping all tests." ++ exit 0 ++} + +- start_lttng_sessiond_notap ++validate_lttng_modules_present + +- test_kernel_syscall_notification ++start_lttng_sessiond_notap + +- stop_lttng_sessiond_notap ++test_kernel_syscall_notification + +-else +- # Kernel tests are skipped. +- plan_tests $NUM_TESTS +- skip 0 "Root access is needed. Skipping all kernel notification tests." $NUM_TESTS +-fi ++stop_lttng_sessiond_notap + + rm -f "$TESTAPP_STATE_PATH" +diff --git a/tests/regression/tools/notification/test_notification_kernel_userspace_probe b/tests/regression/tools/notification/test_notification_kernel_userspace_probe +index 8ef8d708d..abddd9be7 100755 +--- a/tests/regression/tools/notification/test_notification_kernel_userspace_probe ++++ b/tests/regression/tools/notification/test_notification_kernel_userspace_probe +@@ -29,18 +29,18 @@ function test_kernel_userspace_probe_notification + wait $APP_PID 2> /dev/null + } + +-if [ "$(id -u)" == "0" ]; then +- validate_lttng_modules_present ++check_skip_kernel_test && ++{ ++ plan_skip_all "Skipping all tests." ++ exit 0 ++} ++ ++validate_lttng_modules_present + +- start_lttng_sessiond_notap ++start_lttng_sessiond_notap + +- test_kernel_userspace_probe_notification ++test_kernel_userspace_probe_notification + +- stop_lttng_sessiond_notap +-else +- # Kernel tests are skipped. +- plan_tests $NUM_TESTS +- skip 0 "Root access is needed. Skipping all kernel notification tests." $NUM_TESTS +-fi ++stop_lttng_sessiond_notap + + rm -f "$TESTAPP_STATE_PATH" +diff --git a/tests/regression/tools/notification/test_notification_multi_app b/tests/regression/tools/notification/test_notification_multi_app +index d8b639225..61891b56f 100755 +--- a/tests/regression/tools/notification/test_notification_multi_app ++++ b/tests/regression/tools/notification/test_notification_multi_app +@@ -411,22 +411,18 @@ function test_on_register_evaluation () + rm -rf "$output_dir" + } + +- + TESTS=( + test_multi_app_ust + test_on_register_evaluation_ust + ) + +-if [ "$(id -u)" == "0" ]; then ++check_skip_kernel_test "$NUM_TEST_KERNEL" "Skipping kernel multi-app notification tests." || { + validate_lttng_modules_present + TESTS+=( +- test_multi_app_kernel +- test_on_register_evaluation_kernel +-) +-else +- skip 0 "Root access is needed. Skipping all kernel multi-app notification tests." $NUM_TEST_KERNEL +-fi +- ++ test_multi_app_kernel ++ test_on_register_evaluation_kernel ++ ) ++} + + for fct_test in ${TESTS[@]}; + do +diff --git a/tests/regression/tools/notification/test_notification_notifier_discarded_count b/tests/regression/tools/notification/test_notification_notifier_discarded_count +index c9235393e..a6c31a728 100755 +--- a/tests/regression/tools/notification/test_notification_notifier_discarded_count ++++ b/tests/regression/tools/notification/test_notification_notifier_discarded_count +@@ -391,7 +391,8 @@ function test_ust_notifier_discarded_regardless_trigger_owner + test_ust_notifier_discarded_count + test_ust_notifier_discarded_count_max_bucket + +-if [ "$(id -u)" == "0" ]; then ++check_skip_kernel_test "$KERNEL_NUM_TESTS" "Skipping kernel notification tests." || ++{ + + validate_lttng_modules_present + +@@ -413,9 +414,7 @@ if [ "$(id -u)" == "0" ]; then + modprobe --remove lttng-test + + rm -rf "${sessiond_pipe[@]}" 2> /dev/null +-else +- # Kernel tests are skipped. +- skip 0 "Root access is needed. Skipping all kernel notification tests." $KERNEL_NUM_TESTS +-fi ++ ++} + + rm -rf "$TEST_TMPDIR" +diff --git a/tests/regression/tools/regen-metadata/test_kernel b/tests/regression/tools/regen-metadata/test_kernel +index 49eea32a7..555a4e2ce 100755 +--- a/tests/regression/tools/regen-metadata/test_kernel ++++ b/tests/regression/tools/regen-metadata/test_kernel +@@ -99,13 +99,7 @@ plan_tests $NUM_TESTS + + print_test_banner "$TEST_DESC" + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- +-skip $isroot "Root access is needed. Skipping all kernel streaming tests." $NUM_TESTS || ++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." || + { + validate_lttng_modules_present + +diff --git a/tests/regression/tools/regen-statedump/test_kernel b/tests/regression/tools/regen-statedump/test_kernel +index 8a261355d..bbbac3942 100755 +--- a/tests/regression/tools/regen-statedump/test_kernel ++++ b/tests/regression/tools/regen-statedump/test_kernel +@@ -39,13 +39,7 @@ plan_tests $NUM_TESTS + + print_test_banner "$TEST_DESC" + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- +-skip $isroot "Root access is needed. Skipping all kernel streaming tests." $NUM_TESTS || ++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." || + { + validate_lttng_modules_present + start_lttng_sessiond +diff --git a/tests/regression/tools/rotation/test_kernel b/tests/regression/tools/rotation/test_kernel +index f5f1f5553..efe3fd359 100755 +--- a/tests/regression/tools/rotation/test_kernel ++++ b/tests/regression/tools/rotation/test_kernel +@@ -82,13 +82,7 @@ plan_tests $NUM_TESTS + + print_test_banner "$TEST_DESC" + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- +-skip $isroot "Root access is needed. Skipping all kernel streaming tests." $NUM_TESTS || ++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." || + { + validate_lttng_modules_present + +diff --git a/tests/regression/tools/snapshots/test_kernel b/tests/regression/tools/snapshots/test_kernel +index abb243563..d91876867 100755 +--- a/tests/regression/tools/snapshots/test_kernel ++++ b/tests/regression/tools/snapshots/test_kernel +@@ -217,13 +217,7 @@ plan_tests $NUM_TESTS + + print_test_banner "$TEST_DESC" + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- +-skip $isroot "Root access is needed. Skipping all kernel snapshot tests" $NUM_TESTS || ++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." || + { + + validate_lttng_modules_present +diff --git a/tests/regression/tools/snapshots/test_kernel_streaming b/tests/regression/tools/snapshots/test_kernel_streaming +index 0c92dc710..dd965afee 100755 +--- a/tests/regression/tools/snapshots/test_kernel_streaming ++++ b/tests/regression/tools/snapshots/test_kernel_streaming +@@ -145,13 +145,7 @@ plan_tests $NUM_TESTS + + print_test_banner "$TEST_DESC" + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- +-skip $isroot "Root access is needed. Skipping all kernel streaming tests" $NUM_TESTS || ++check_skip_kernel_test $NUM_TESTS "Skipping all tests." || + { + validate_lttng_modules_present + +diff --git a/tests/regression/tools/streaming/test_high_throughput_limits b/tests/regression/tools/streaming/test_high_throughput_limits +index 2b9e3ad39..c55d51098 100755 +--- a/tests/regression/tools/streaming/test_high_throughput_limits ++++ b/tests/regression/tools/streaming/test_high_throughput_limits +@@ -170,13 +170,7 @@ plan_tests $NUM_TESTS + + print_test_banner "$TEST_DESC" + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- +-skip $isroot "Root access is needed to set bandwith limits. Skipping all tests." $NUM_TESTS || ++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." || + { + + # Catch sigint and try to cleanup limits +diff --git a/tests/regression/tools/streaming/test_kernel b/tests/regression/tools/streaming/test_kernel +index 33334229f..113eea7bf 100755 +--- a/tests/regression/tools/streaming/test_kernel ++++ b/tests/regression/tools/streaming/test_kernel +@@ -47,13 +47,7 @@ plan_tests $NUM_TESTS + + print_test_banner "$TEST_DESC" + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- +-skip $isroot "Root access is needed. Skipping all kernel streaming tests." $NUM_TESTS || ++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." || + { + validate_lttng_modules_present + +diff --git a/tests/regression/tools/tracker/test_event_tracker b/tests/regression/tools/tracker/test_event_tracker +index cc0f698d2..de0c79d36 100755 +--- a/tests/regression/tools/tracker/test_event_tracker ++++ b/tests/regression/tools/tracker/test_event_tracker +@@ -466,13 +466,7 @@ test_event_track_untrack ust 0 "${EVENT_NAME}" "--pid --all" # backward compat + test_event_tracker ust 1 "${EVENT_NAME}" "--pid --all" # backward compat + test_event_pid_tracker ust 1 "${EVENT_NAME}" + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- +-skip $isroot "Root access is needed. Skipping all kernel tracker tests." $NUM_KERNEL_TESTS || ++check_skip_kernel_test "$NUM_KERNEL_TESTS" "Skipping kernel tracker tests." || + { + diag "Test kernel tracker" + +diff --git a/tests/regression/tools/trigger/test_add_trigger_cli b/tests/regression/tools/trigger/test_add_trigger_cli +index 98ecf6272..d1763aa2e 100755 +--- a/tests/regression/tools/trigger/test_add_trigger_cli ++++ b/tests/regression/tools/trigger/test_add_trigger_cli +@@ -34,12 +34,6 @@ tmp_stdout=$(mktemp --tmpdir -t test_parse_cli_trigger_stdout.XXXXXX) + tmp_stderr=$(mktemp --tmpdir -t test_parse_cli_trigger_stderr.XXXXXX) + uprobe_elf_binary="${TESTDIR}/utils/testapp/userspace-probe-elf-binary/.libs/userspace-probe-elf-binary" + +-if [ "$(id -u)" == "0" ]; then +- ist_root=1 +-else +- ist_root=0 +-fi +- + function test_success () + { + local test_name="$1" +@@ -223,7 +217,7 @@ test_success "--exclude-name two" "trigger5" \ + --condition event-rule-matches --type=user --name='jean-*' --exclude-name jean-chretien -x jean-charest \ + --action notify + +-skip $ist_root "non-root user: skipping kprobe tests" 18 || { ++check_skip_kernel_test 18 "Skipping kprobe tests." || { + i=0 + + for type in kprobe kernel:kprobe; do +@@ -262,7 +256,7 @@ skip $ist_root "non-root user: skipping kprobe tests" 18 || { + done + } + +-skip $ist_root "non-root user: skipping uprobe tests" 6 || { ++check_skip_kernel_test 6 "Skipping uprobe tests." || { + test_success "--condition event-rule-matches uprobe" "uprobe-trigger-0" \ + --name="uprobe-trigger-0" \ + --condition event-rule-matches --type=kernel:uprobe --location=${uprobe_elf_binary}:test_function --event-name=ma-probe \ +@@ -274,7 +268,7 @@ skip $ist_root "non-root user: skipping uprobe tests" 6 || { + --action notify + } + +-skip $ist_root "non-root user: skipping syscall tests" 30 || { ++check_skip_kernel_test 30 "Skipping syscall tests." || { + test_success "--condition event-rule-matches one syscall" "syscall-trigger-0" \ + --name="syscall-trigger-0" \ + --condition event-rule-matches --type=syscall --name=open \ +diff --git a/tests/regression/tools/trigger/test_list_triggers_cli b/tests/regression/tools/trigger/test_list_triggers_cli +index a04018013..02c3de3e9 100755 +--- a/tests/regression/tools/trigger/test_list_triggers_cli ++++ b/tests/regression/tools/trigger/test_list_triggers_cli +@@ -36,22 +36,12 @@ uprobe_sdt_binary=$(realpath "${TESTDIR}/utils/testapp/userspace-probe-sdt-binar + register_some_triggers_bin=$(realpath "${CURDIR}/utils/register-some-triggers") + + uid=$(id --user) +-gid=$(id --group) + +-if [ "$uid" == "0" ]; then +- ist_root=1 +- ls "$uprobe_sdt_binary" >/dev/null 2>&1 +- if test $? == 0; then +- hast_sdt_binary=1 +- else +- hast_sdt_binary=0 +- fi +-else +- ist_root=0 +- hast_sdt_binary=0 ++sdt_binary_present=0 ++if [ -f "$uprobe_sdt_binary" ]; then ++ sdt_binary_present=1 + fi + +- + test_top_level_options () + { + diag "Listing top level options" +@@ -2695,10 +2685,12 @@ start_lttng_sessiond_notap + + test_top_level_options + test_event_rule_matches_tracepoint +-skip $ist_root "non-root user: skipping kprobe tests" 13 || test_event_rule_matches_probe +-skip $ist_root "non-root user: skipping uprobe tests" 9 || test_event_rule_matches_userspace_probe_elf +-skip $(($ist_root && $hast_sdt_binary)) "skipping userspace probe SDT tests" 9 || test_event_rule_matches_userspace_probe_sdt +-skip $ist_root "non-root user: skipping syscall tests" 17 || test_event_rule_matches_syscall ++check_skip_kernel_test 48 "Skipping kprobe, uprobe, SDT and syscall tests." || { ++ test_event_rule_matches_probe ++ test_event_rule_matches_userspace_probe_elf ++ skip $sdt_binary_present "No SDT binary. Skipping userspace probe SDT tests" 9 || test_event_rule_matches_userspace_probe_sdt ++ test_event_rule_matches_syscall ++} + test_session_consumed_size_condition + test_buffer_usage_conditions + test_session_rotation_conditions +diff --git a/tests/regression/tools/wildcard/test_event_wildcard b/tests/regression/tools/wildcard/test_event_wildcard +index f69baffc4..14d9bb88a 100755 +--- a/tests/regression/tools/wildcard/test_event_wildcard ++++ b/tests/regression/tools/wildcard/test_event_wildcard +@@ -124,13 +124,7 @@ test_event_wildcard ust 1 'tp*tptest' + test_event_wildcard ust 1 'tp**tptest' + test_event_wildcard ust 1 'tp*test' + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- +-skip $isroot "Root access is needed. Skipping all kernel wildcard tests." $NUM_KERNEL_TESTS || ++check_skip_kernel_test "$NUM_KERNEL_TESTS" "Skipping kernel wildcard tests." || + { + diag "Test kernel wildcards" + +diff --git a/tests/regression/tools/working-directory/test_relayd_working_directory b/tests/regression/tools/working-directory/test_relayd_working_directory +index c7e784cca..6bd1e504a 100755 +--- a/tests/regression/tools/working-directory/test_relayd_working_directory ++++ b/tests/regression/tools/working-directory/test_relayd_working_directory +@@ -145,9 +145,9 @@ function test_relayd_debug_permission() + diag "Test lttng-relayd change working directory on non writable directory" + + if [ "$(id -u)" == "0" ]; then +- is_user=0 ++ is_user=0 + else +- is_user=1 ++ is_user=1 + fi + + skip $is_user "Skipping permission debug output test; operation can't fail as root" 6 || +diff --git a/tests/regression/ust/namespaces/test_ns_contexts_change b/tests/regression/ust/namespaces/test_ns_contexts_change +index 8a4b62ce3..622241f7b 100755 +--- a/tests/regression/ust/namespaces/test_ns_contexts_change ++++ b/tests/regression/ust/namespaces/test_ns_contexts_change +@@ -101,12 +101,7 @@ plan_tests $NUM_TESTS + + print_test_banner "$TEST_DESC" + +-isroot=0 +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-fi +- +-skip $isroot "Root access is needed. Skipping all tests." "$NUM_TESTS" && exit 0 ++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." && exit 0 + + system_has_ns=0 + if [ -d "/proc/$$/ns" ]; then +diff --git a/tests/regression/ust/test_event_perf b/tests/regression/ust/test_event_perf +index 33aab2981..178959a19 100755 +--- a/tests/regression/ust/test_event_perf ++++ b/tests/regression/ust/test_event_perf +@@ -119,17 +119,11 @@ plan_tests $NUM_TESTS + + print_test_banner "$TEST_DESC" + +-if [ "$(id -u)" == "0" ]; then +- isroot=1 +-else +- isroot=0 +-fi +- + start_lttng_sessiond + + test_parsing_raw + +-skip $isroot "Root access is needed. Skipping UST perf tests." 8 || ++check_skip_kernel_test 8 "Skipping UST perf tests." || + { + test_event_basic + } +diff --git a/tests/utils/utils.sh b/tests/utils/utils.sh +index faa87e783..da0e0569d 100644 +--- a/tests/utils/utils.sh ++++ b/tests/utils/utils.sh +@@ -318,6 +318,41 @@ function conf_proc_count() + echo + } + ++# Usage: ++# check_skip_kernel_test [NB_TESTS] [SKIP_MESSAGE] ++# Return 0 if LTTNG_TOOLS_DISABLE_KERNEL_TESTS was set or the current user is not a root user ++# If NB_TESTS is set, call skip() to skip number of tests. ++# If NB_TESTS is empty, just output a reason with diag. ++# An optional message can be added. ++ ++function check_skip_kernel_test () ++{ ++ local num_tests="$1" ++ local skip_message="$2" ++ ++ # Check for skip test kernel flag ++ if [ "$LTTNG_TOOLS_DISABLE_KERNEL_TESTS" == "1" ]; then ++ if ! test -z "$num_tests"; then ++ skip 0 "LTTNG_TOOLS_DISABLE_KERNEL_TESTS was set.${skip_message+ }${skip_message}" "$num_tests" ++ else ++ diag "LTTNG_TOOLS_DISABLE_KERNEL_TESTS was set.${skip_message+ }${skip_message}" ++ fi ++ return 0 ++ fi ++ ++ # Check if we are running as root ++ if [ "$(id -u)" != "0" ]; then ++ if ! test -z "$num_tests"; then ++ skip 0 "Root access is needed for kernel testing.${skip_message+ }${skip_message}" "$num_tests" ++ else ++ diag "Root access is needed for kernel testing.${skip_message+ }${skip_message}" ++ fi ++ return 0 ++ fi ++ ++ return 1 ++} ++ + # Check if base lttng-modules are present. + # Bail out on failure + function validate_lttng_modules_present () +-- +2.25.1 + diff --git a/meta/recipes-kernel/lttng/lttng-tools/0001-tests-do-not-strip-a-helper-library.patch b/meta/recipes-kernel/lttng/lttng-tools/0001-tests-do-not-strip-a-helper-library.patch new file mode 100644 index 0000000000..2f95889c4b --- /dev/null +++ b/meta/recipes-kernel/lttng/lttng-tools/0001-tests-do-not-strip-a-helper-library.patch @@ -0,0 +1,24 @@ +From 2237748af00467ad8250a7ccd944200f811db69a Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <alex.kanavin@gmail.com> +Date: Thu, 12 Dec 2019 16:52:07 +0100 +Subject: [PATCH] tests: do not strip a helper library + +Upstream-Status: Inappropriate [oe-core specific] +Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> +--- + tests/utils/testapp/userspace-probe-elf-binary/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tests/utils/testapp/userspace-probe-elf-binary/Makefile.am b/tests/utils/testapp/userspace-probe-elf-binary/Makefile.am +index 836f13e..e19a554 100644 +--- a/tests/utils/testapp/userspace-probe-elf-binary/Makefile.am ++++ b/tests/utils/testapp/userspace-probe-elf-binary/Makefile.am +@@ -14,7 +14,7 @@ userspace_probe_elf_binary_LDADD = libfoo.la + libfoo.strip: libfoo.la + $(OBJCOPY) --strip-all .libs/libfoo.so + +-all-local: libfoo.strip ++all-local: + @if [ x"$(srcdir)" != x"$(builddir)" ]; then \ + for script in $(EXTRA_DIST); do \ + cp -f $(srcdir)/$$script $(builddir); \ diff --git a/meta/recipes-kernel/lttng/lttng-tools/0002-Fix-test-skip-test_getcpu_override-on-single-thread-.patch b/meta/recipes-kernel/lttng/lttng-tools/0002-Fix-test-skip-test_getcpu_override-on-single-thread-.patch deleted file mode 100644 index 5bb88d21e5..0000000000 --- a/meta/recipes-kernel/lttng/lttng-tools/0002-Fix-test-skip-test_getcpu_override-on-single-thread-.patch +++ /dev/null @@ -1,52 +0,0 @@ -From e7db27668a9d7fd279d45bc43f3a2d5847374e7b Mon Sep 17 00:00:00 2001 -From: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com> -Date: Tue, 12 Mar 2019 12:04:58 -0400 -Subject: [PATCH lttng-tools 1/2] Fix: test: skip test_getcpu_override on - single thread system - -There is no value in performing this test on single thread system -since the only valid value for the cpu field is 0. - -This test currently fails on single thread system (i.e yocto runquemu) -on the test_getcpu_override_fail test case. - -Upstream-Status: Accepted [f87d0ca370c17b597762f5ee218f0e821ed2452d] -Backported to 2.11 and 2.10 - -Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com> ---- - .../ust/getcpu-override/test_getcpu_override | 16 +++++++++++----- - 1 file changed, 11 insertions(+), 5 deletions(-) - -diff --git a/tests/regression/ust/getcpu-override/test_getcpu_override b/tests/regression/ust/getcpu-override/test_getcpu_override -index 4ca385aeb..ee3e31953 100755 ---- a/tests/regression/ust/getcpu-override/test_getcpu_override -+++ b/tests/regression/ust/getcpu-override/test_getcpu_override -@@ -157,13 +157,19 @@ plan_tests $NUM_TESTS - - print_test_banner "$TEST_DESC" - --if [ -x "$CURDIR/.libs/lttng-ust-getcpu-override-test.so" ]; then -- foundobj=1 --else -- foundobj=0 -+if [ ! -x "$CURDIR/.libs/lttng-ust-getcpu-override-test.so" ]; then -+ skip 0 "No shared object generated. Skipping all tests." $NUM_TESTS && exit 0 -+fi -+ -+if [ "$num_cpus" -eq "1" ]; then -+ # Skip the test since we cannot perform it as designed since N mod 1 -+ # is always equals to zero. There is no point testing this on a system -+ # with a single thread. LTTng-UST limits the get_cpu function to return -+ # value inside the [0, NUM_CPU - 1] range for a valid event (present in -+ # trace). -+ skip 0 "Test system only have a single thread. Skipping all tests." $NUM_TESTS && exit 0 - fi - --skip $foundobj "No shared object generated. Skipping all tests." $NUM_TESTS && exit 0 - - TESTS=( - test_getcpu_override_fail --- -2.17.1 - diff --git a/meta/recipes-kernel/lttng/lttng-tools/0003-Fix-test-unit-the-tree-origin-can-be-a-symlink-itsel.patch b/meta/recipes-kernel/lttng/lttng-tools/0003-Fix-test-unit-the-tree-origin-can-be-a-symlink-itsel.patch deleted file mode 100644 index 822b26a367..0000000000 --- a/meta/recipes-kernel/lttng/lttng-tools/0003-Fix-test-unit-the-tree-origin-can-be-a-symlink-itsel.patch +++ /dev/null @@ -1,80 +0,0 @@ -From 83d165442d1c3658b6bafa28ddade8ffee7092ad Mon Sep 17 00:00:00 2001 -From: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com> -Date: Wed, 6 Mar 2019 16:46:49 -0500 -Subject: [PATCH lttng-tools 2/2] Fix: test: unit: the tree origin can be a - symlink itself - -Problem: - -The base tree is defined as "/tmp/.....XXXXXX". -On systems where "/tmp/" is itself a symlink utils_expand_path will -expand the tree origin itself. - -For example on a base core-image-minimal Yocto build /tmp is a symlink -to "/var/tmp", which is a symlink to "/var/volatile". - -utils_expand_path will return something like this for the symlink test: -"/var/volative/.....XXXXXX/...." which is the valid result. - -Solution: - -Simply use realpath on the tree_origin and use this path to perform the -test validation. - -This work was performed in the effort to support yocto fully and be able -to run the test suite to detect problem as early as possible. - - -Upstream-Status: Accepted [f66e964a2e0c75f5e1a55fbcc963b1c5e2b4519d] -Backported to 2.11 and 2.10 - -Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com> ---- - tests/unit/test_utils_expand_path.c | 18 ++++++++++++++---- - 1 file changed, 14 insertions(+), 4 deletions(-) - -diff --git a/tests/unit/test_utils_expand_path.c b/tests/unit/test_utils_expand_path.c -index d5cab002e..d047c207d 100644 ---- a/tests/unit/test_utils_expand_path.c -+++ b/tests/unit/test_utils_expand_path.c -@@ -281,8 +281,8 @@ error: - static void test_utils_expand_path(void) - { - char *result; -- char name[100], tmppath[PATH_MAX]; -- int i; -+ char name[100], tmppath[PATH_MAX], real_tree_origin[PATH_MAX]; -+ int i, treelen; - - /* Test valid cases */ - for (i = 0; i < num_valid_tests; i++) { -@@ -295,14 +295,24 @@ static void test_utils_expand_path(void) - free(result); - } - -+ /* -+ * Get the realpath for the tree_origin since it can itself be a -+ * symlink. -+ */ -+ result = realpath(tree_origin, real_tree_origin); -+ if (!result) { -+ fail("realpath failed."); -+ return; -+ } -+ - /* Test symlink tree cases */ -- int treelen = strlen(tree_origin) + 1; -+ treelen = strlen(real_tree_origin) + 1; - for (i = 0; i < num_symlink_tests; i++) { - sprintf(name, "symlink tree test case: [tmppath/]%s", - symlink_tests_inputs[i].input); - - snprintf(tmppath, PATH_MAX, "%s/%s", -- tree_origin, symlink_tests_inputs[i].input); -+ real_tree_origin, symlink_tests_inputs[i].input); - result = utils_expand_path(tmppath); - ok(result != NULL && strcmp(result + treelen, - symlink_tests_inputs[i].expected_result) == 0, name); --- -2.17.1 - diff --git a/meta/recipes-kernel/lttng/lttng-tools/0004-Skip-when-testapp-is-not-present.patch b/meta/recipes-kernel/lttng/lttng-tools/0004-Skip-when-testapp-is-not-present.patch deleted file mode 100644 index 6c9f7e462c..0000000000 --- a/meta/recipes-kernel/lttng/lttng-tools/0004-Skip-when-testapp-is-not-present.patch +++ /dev/null @@ -1,610 +0,0 @@ -From 95c27e6acceaeda55c729b9e92e594322adef13f Mon Sep 17 00:00:00 2001 -From: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com> -Date: Wed, 3 Apr 2019 16:31:18 -0400 -Subject: [PATCH lttng-tools] Skip when testapp is not present - -We expect lttng-ust do be present, this is a wrong assumptions. - -This is a quick fix. The real fix is to either detect at runtime -lttng-ust support or at build time (HAVE_LIBLTTNG_UST_CTL). - -This prevent hang for make check done on a build configured with ---without-lttng-ust. - -Upstream-Status: Inappropriate [other] -Reason: This patch is inappropriate for upstream for 2.10 stable release -since we do not backport "superficial" fix to the test suite. We do -backport when a test is broken. The fact that on --without-lttng-ust -hang is not a "broken" test per-see. Still, a variation of this fix will -be upstreamed in our master branch and possibly 2.11. The upstreamed -version will split the test in kernel/ust test and skip them at the -build system level. This patch is more succinct. - -Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com> ---- - tests/regression/tools/crash/test_crash | 4 ++ - .../regression/tools/exclusion/test_exclusion | 4 ++ - .../tools/filtering/test_valid_filter | 21 ++++-- - tests/regression/tools/health/test_thread_ok | 29 +++++--- - tests/regression/tools/live/Makefile.am | 2 - - tests/regression/tools/live/test_lttng_ust | 4 ++ - tests/regression/tools/live/test_ust | 4 ++ - .../tools/live/test_ust_tracefile_count | 4 ++ - tests/regression/tools/mi/test_mi | 4 ++ - .../notification/test_notification_multi_app | 18 +++-- - .../tools/notification/test_notification_ust | 4 ++ - .../regression/tools/regen-metadata/test_ust | 2 +- - .../regression/tools/regen-statedump/test_ust | 2 +- - .../regression/tools/save-load/test_autoload | 7 ++ - tests/regression/tools/save-load/test_load | 8 +++ - tests/regression/tools/save-load/test_save | 7 ++ - .../regression/tools/snapshots/test_ust_fast | 2 +- - .../regression/tools/snapshots/test_ust_long | 2 +- - .../tools/snapshots/test_ust_streaming | 2 +- - tests/regression/tools/snapshots/ust_test | 2 +- - .../streaming/test_high_throughput_limits | 2 +- - tests/regression/tools/streaming/test_ust | 2 +- - .../tracefile-limits/test_tracefile_count | 2 +- - .../tracefile-limits/test_tracefile_size | 2 +- - .../tools/wildcard/test_event_wildcard | 67 ++++++++++--------- - 25 files changed, 147 insertions(+), 60 deletions(-) - -diff --git a/tests/regression/tools/crash/test_crash b/tests/regression/tools/crash/test_crash -index 8c62c513d..3cbe97688 100755 ---- a/tests/regression/tools/crash/test_crash -+++ b/tests/regression/tools/crash/test_crash -@@ -35,6 +35,10 @@ NUM_TESTS=77 - - source $TESTDIR/utils/utils.sh - -+if [ ! -x "$TESTAPP_BIN" ]; then -+ plan_skip_all "No UST events binary detected." -+fi -+ - # Global declaration for simplification - LTTNG_CRASH=$TESTDIR/../src/bin/lttng-crash/$CRASH_BIN - -diff --git a/tests/regression/tools/exclusion/test_exclusion b/tests/regression/tools/exclusion/test_exclusion -index 949cd41df..42e4d72fb 100755 ---- a/tests/regression/tools/exclusion/test_exclusion -+++ b/tests/regression/tools/exclusion/test_exclusion -@@ -30,6 +30,10 @@ NUM_TESTS=149 - - source $TESTDIR/utils/utils.sh - -+if [ ! -x "$TESTAPP_BIN" ]; then -+ plan_skip_all "No UST events binary detected." -+fi -+ - function enable_ust_lttng_all_event_exclusion() - { - sess_name="$1" -diff --git a/tests/regression/tools/filtering/test_valid_filter b/tests/regression/tools/filtering/test_valid_filter -index 163b32182..1e8da630b 100755 ---- a/tests/regression/tools/filtering/test_valid_filter -+++ b/tests/regression/tools/filtering/test_valid_filter -@@ -418,12 +418,18 @@ issue_356_filter+="intfield > 4 && intfield > 5 && " - issue_356_filter+="intfield > 6 && intfield > 7 && " - issue_356_filter+="intfield > 8 || intfield > 0" - -+BIN_NAME="gen-ust-events" -+ -+skip_ust=1 -+if [ ! -x "$CURDIR/$BIN_NAME" ]; then -+ skip_ust=0 -+ skip 0 "No UST nevents binary detected." $NUM_UST_TESTS -+fi -+ - start_lttng_sessiond - - ### UST TESTS - --BIN_NAME="gen-ust-events" -- - KIRK_KRAUSS_TESTS=( - # the tests below were written by Kirk Krauss in this article: - # http://www.drdobbs.com/architecture-and-design/matching-wildcards-an-empirical-way-to-t/240169123 -@@ -897,9 +903,6 @@ UST_STR_FILTERS=( - END - ) - --if [ ! -x "$CURDIR/$BIN_NAME" ]; then -- BAIL_OUT "No UST nevents binary detected." --fi - - IFS="$OLDIFS" - -@@ -910,6 +913,10 @@ i=0 - while true; do - validator="${UST_FILTERS[$i]}" - -+ if [ $skip_ust -eq 0 ]; then -+ break -+ fi -+ - if [ "$validator" = END ]; then - break - fi -@@ -929,6 +936,10 @@ i=0 - while true; do - validator="${UST_STR_FILTERS[$i]}" - -+ if [ $skip_ust -eq 0 ]; then -+ break -+ fi -+ - if [ "$validator" = END ]; then - break - fi -diff --git a/tests/regression/tools/health/test_thread_ok b/tests/regression/tools/health/test_thread_ok -index e81d6ed24..849b7e71f 100755 ---- a/tests/regression/tools/health/test_thread_ok -+++ b/tests/regression/tools/health/test_thread_ok -@@ -27,6 +27,9 @@ CHANNEL_NAME="testchan" - HEALTH_CHECK_BIN="health_check" - NUM_TESTS=17 - SLEEP_TIME=30 -+TESTAPP_PATH="$TESTDIR/utils/testapp" -+TESTAPP_NAME="gen-ust-events" -+TESTAPP_BIN="$TESTAPP_PATH/$TESTAPP_NAME/$TESTAPP_NAME" - - source $TESTDIR/utils/utils.sh - -@@ -76,15 +79,19 @@ function test_thread_ok - $CURDIR/$HEALTH_CHECK_BIN > ${STDOUT_PATH} 2> ${STDERR_PATH} - report_errors - -- diag "With UST consumer daemons" -- create_lttng_session_no_output $SESSION_NAME -- enable_ust_lttng_event_ok $SESSION_NAME $UST_EVENT_NAME $CHANNEL_NAME -- start_lttng_tracing_ok $SESSION_NAME -- destroy_lttng_session_ok $SESSION_NAME -+ skip $skip_ust "Ust does not seems to be supported" "5" || -+ { -+ diag "With UST consumer daemons" -+ create_lttng_session_no_output $SESSION_NAME -+ enable_ust_lttng_event_ok $SESSION_NAME $UST_EVENT_NAME $CHANNEL_NAME -+ start_lttng_tracing_ok $SESSION_NAME -+ destroy_lttng_session_ok $SESSION_NAME - -- # Check health status -- $CURDIR/$HEALTH_CHECK_BIN > ${STDOUT_PATH} 2> ${STDERR_PATH} -- report_errors -+ -+ # Check health status -+ $CURDIR/$HEALTH_CHECK_BIN > ${STDOUT_PATH} 2> ${STDERR_PATH} -+ report_errors -+ } - - skip $isroot "Root access is needed. Skipping kernel consumer health check test." "5" || - { -@@ -141,6 +148,12 @@ else - isroot=0 - fi - -+if [ ! -x "$TESTAPP_BIN" ]; then -+ skip_ust=0 -+else -+ skip_ust=1 -+fi -+ - test_thread_ok - - rm -rf ${HEALTH_PATH} -diff --git a/tests/regression/tools/live/Makefile.am b/tests/regression/tools/live/Makefile.am -index 46186d383..db74de8d5 100644 ---- a/tests/regression/tools/live/Makefile.am -+++ b/tests/regression/tools/live/Makefile.am -@@ -16,9 +16,7 @@ LIVE=$(top_builddir)/src/bin/lttng-sessiond/session.$(OBJEXT) \ - noinst_PROGRAMS = live_test - EXTRA_DIST = test_kernel test_lttng_kernel - --if HAVE_LIBLTTNG_UST_CTL - EXTRA_DIST += test_ust test_ust_tracefile_count test_lttng_ust --endif - - live_test_SOURCES = live_test.c - live_test_LDADD = $(LIBTAP) $(LIBCOMMON) $(LIBRELAYD) $(LIBSESSIOND_COMM) \ -diff --git a/tests/regression/tools/live/test_lttng_ust b/tests/regression/tools/live/test_lttng_ust -index 06017d01d..be9b3d7f7 100755 ---- a/tests/regression/tools/live/test_lttng_ust -+++ b/tests/regression/tools/live/test_lttng_ust -@@ -38,6 +38,10 @@ NUM_TESTS=12 - - source $TESTDIR/utils/utils.sh - -+if [ ! -x "$TESTAPP_BIN" ]; then -+ plan_skip_all "No UST events binary detected." -+fi -+ - # MUST set TESTDIR before calling those functions - plan_tests $NUM_TESTS - -diff --git a/tests/regression/tools/live/test_ust b/tests/regression/tools/live/test_ust -index 0384a706f..add521bfc 100755 ---- a/tests/regression/tools/live/test_ust -+++ b/tests/regression/tools/live/test_ust -@@ -36,6 +36,10 @@ DIR=$(readlink -f $TESTDIR) - - source $TESTDIR/utils/utils.sh - -+if [ ! -x "$TESTAPP_BIN" ]; then -+ plan_skip_all "No UST events binary detected." -+fi -+ - echo "$TEST_DESC" - - function setup_live_tracing() -diff --git a/tests/regression/tools/live/test_ust_tracefile_count b/tests/regression/tools/live/test_ust_tracefile_count -index 6da368fc6..10504f8c6 100755 ---- a/tests/regression/tools/live/test_ust_tracefile_count -+++ b/tests/regression/tools/live/test_ust_tracefile_count -@@ -36,6 +36,10 @@ DIR=$(readlink -f $TESTDIR) - - source $TESTDIR/utils/utils.sh - -+if [ ! -x "$TESTAPP_BIN" ]; then -+ plan_skip_all "No UST events binary detected." -+fi -+ - echo "$TEST_DESC" - - function setup_live_tracing() -diff --git a/tests/regression/tools/mi/test_mi b/tests/regression/tools/mi/test_mi -index 48dda7da6..2cc30b29a 100755 ---- a/tests/regression/tools/mi/test_mi -+++ b/tests/regression/tools/mi/test_mi -@@ -61,6 +61,10 @@ NUM_TESTS=228 - - source $TESTDIR/utils/utils.sh - -+if [ ! -x "$TESTAPP_BIN" ]; then -+ plan_skip_all "No UST events binary detected." -+fi -+ - #Overwrite the lttng_bin to get mi output - LTTNG_BIN="lttng --mi xml" - -diff --git a/tests/regression/tools/notification/test_notification_multi_app b/tests/regression/tools/notification/test_notification_multi_app -index 0a05ea6a0..29b0f62fa 100755 ---- a/tests/regression/tools/notification/test_notification_multi_app -+++ b/tests/regression/tools/notification/test_notification_multi_app -@@ -52,6 +52,11 @@ plan_tests $NUM_TESTS - - print_test_banner "$TEST_DESC" - -+skip_ust=1 -+if [ ! -x "$TESTAPP_BIN" ]; then -+ skip_ust=0 -+fi -+ - app_pids=() - - function kernel_event_generator_toogle_state -@@ -468,10 +473,15 @@ function test_on_register_evaluation () - } - - --TESTS=( -- test_multi_app_ust -- test_on_register_evaluation_ust --) -+TESTS=() -+if [ $skip_ust -eq "1" ]; then -+ TESTS+=( -+ test_multi_app_ust -+ test_on_register_evaluation_ust -+ ) -+else -+ skip 0 "No UST events binary detected." $NUM_TEST_UST -+fi - - if [ "$(id -u)" == "0" ]; then - TESTS+=( -diff --git a/tests/regression/tools/notification/test_notification_ust b/tests/regression/tools/notification/test_notification_ust -index 8941e476d..eb2e15cad 100755 ---- a/tests/regression/tools/notification/test_notification_ust -+++ b/tests/regression/tools/notification/test_notification_ust -@@ -46,6 +46,10 @@ DIR=$(readlink -f $TESTDIR) - - source $TESTDIR/utils/utils.sh - -+if [ ! -x "$TESTAPP_BIN" ]; then -+ plan_skip_all "No UST events binary detected." -+fi -+ - function ust_event_generator_toogle_state - { - ust_event_generator_suspended=$((ust_event_generator_suspended==0)) -diff --git a/tests/regression/tools/regen-metadata/test_ust b/tests/regression/tools/regen-metadata/test_ust -index b7f1af1d8..312c8a40d 100755 ---- a/tests/regression/tools/regen-metadata/test_ust -+++ b/tests/regression/tools/regen-metadata/test_ust -@@ -34,7 +34,7 @@ NUM_TESTS=33 - source $TESTDIR/utils/utils.sh - - if [ ! -x "$TESTAPP_BIN" ]; then -- BAIL_OUT "No UST events binary detected." -+ plan_skip_all "No UST events binary detected." - fi - - function lttng_create_session_uri -diff --git a/tests/regression/tools/regen-statedump/test_ust b/tests/regression/tools/regen-statedump/test_ust -index 486b9a560..8d455b26a 100755 ---- a/tests/regression/tools/regen-statedump/test_ust -+++ b/tests/regression/tools/regen-statedump/test_ust -@@ -34,7 +34,7 @@ NUM_TESTS=11 - source $TESTDIR/utils/utils.sh - - if [ ! -x "$TESTAPP_BIN" ]; then -- BAIL_OUT "No UST events binary detected." -+ plan_skip_all "No UST events binary detected." - fi - - function test_ust_local () -diff --git a/tests/regression/tools/save-load/test_autoload b/tests/regression/tools/save-load/test_autoload -index 7ee5e9906..ec376cfb3 100755 ---- a/tests/regression/tools/save-load/test_autoload -+++ b/tests/regression/tools/save-load/test_autoload -@@ -21,6 +21,9 @@ CURDIR=$(dirname $0)/ - CONFIG_DIR="${CURDIR}/configuration" - TESTDIR=$CURDIR/../../../ - export LTTNG_SESSION_CONFIG_XSD_PATH=$(readlink -m ${TESTDIR}../src/common/config/) -+TESTAPP_PATH="$TESTDIR/utils/testapp" -+TESTAPP_NAME="gen-ust-events" -+TESTAPP_BIN="$TESTAPP_PATH/$TESTAPP_NAME/$TESTAPP_NAME" - - DIR=$(readlink -f $TESTDIR) - -@@ -28,6 +31,10 @@ NUM_TESTS=9 - - source $TESTDIR/utils/utils.sh - -+if [ ! -x "$TESTAPP_BIN" ]; then -+ plan_skip_all "No UST events binary detected." -+fi -+ - # MUST set TESTDIR before calling those functions - plan_tests $NUM_TESTS - -diff --git a/tests/regression/tools/save-load/test_load b/tests/regression/tools/save-load/test_load -index 5e38b46b6..b6fdd8192 100755 ---- a/tests/regression/tools/save-load/test_load -+++ b/tests/regression/tools/save-load/test_load -@@ -20,6 +20,10 @@ TEST_DESC="Load session(s)" - CURDIR=$(dirname $0)/ - CONFIG_DIR="${CURDIR}/configuration" - TESTDIR=$CURDIR/../../../ -+TESTAPP_PATH="$TESTDIR/utils/testapp" -+TESTAPP_NAME="gen-ust-events" -+TESTAPP_BIN="$TESTAPP_PATH/$TESTAPP_NAME/$TESTAPP_NAME" -+ - export LTTNG_SESSION_CONFIG_XSD_PATH=$(readlink -m ${TESTDIR}../src/common/config/) - - SESSION_NAME="load-42" -@@ -31,6 +35,10 @@ NUM_TESTS=67 - - source $TESTDIR/utils/utils.sh - -+if [ ! -x "$TESTAPP_BIN" ]; then -+ plan_skip_all "No UST events binary detected." -+fi -+ - # MUST set TESTDIR before calling those functions - plan_tests $NUM_TESTS - -diff --git a/tests/regression/tools/save-load/test_save b/tests/regression/tools/save-load/test_save -index c5f6b1341..cfaf67b7a 100755 ---- a/tests/regression/tools/save-load/test_save -+++ b/tests/regression/tools/save-load/test_save -@@ -23,6 +23,9 @@ TESTDIR=$CURDIR/../../../ - SESSION_NAME="save-42" - CHANNEL_NAME="chan-save" - EVENT_NAME="tp:tptest" -+TESTAPP_PATH="$TESTDIR/utils/testapp" -+TESTAPP_NAME="gen-ust-events" -+TESTAPP_BIN="$TESTAPP_PATH/$TESTAPP_NAME/$TESTAPP_NAME" - - DIR=$(readlink -f $TESTDIR) - -@@ -30,6 +33,10 @@ NUM_TESTS=41 - - source $TESTDIR/utils/utils.sh - -+if [ ! -x "TESTAPP_BIN" ]; then -+ plan_skip_all "No UST events binary detected." -+fi -+ - # MUST set TESTDIR before calling those functions - plan_tests $NUM_TESTS - -diff --git a/tests/regression/tools/snapshots/test_ust_fast b/tests/regression/tools/snapshots/test_ust_fast -index edb435c52..5a68ec56d 100755 ---- a/tests/regression/tools/snapshots/test_ust_fast -+++ b/tests/regression/tools/snapshots/test_ust_fast -@@ -23,7 +23,7 @@ TEST_BIN="ust_test" - source $TESTDIR/utils/utils.sh - - if [ ! -x "$CURDIR/$TEST_BIN" ]; then -- BAIL_OUT "No UST test found: $TEST_BIN" -+ plan_skip_all "No UST test found: $TEST_BIN" - fi - - ./$CURDIR/$TEST_BIN $NR_SNAPSHOT -diff --git a/tests/regression/tools/snapshots/test_ust_long b/tests/regression/tools/snapshots/test_ust_long -index 9e1a0c262..afa019f6a 100755 ---- a/tests/regression/tools/snapshots/test_ust_long -+++ b/tests/regression/tools/snapshots/test_ust_long -@@ -23,7 +23,7 @@ TEST_BIN="ust_test" - source $TESTDIR/utils/utils.sh - - if [ ! -x "$CURDIR/$TEST_BIN" ]; then -- BAIL_OUT "No UST test found: $TEST_BIN" -+ plan_skip_all "No UST test found: $TEST_BIN" - fi - - ./$CURDIR/$TEST_BIN $NR_SNAPSHOT -diff --git a/tests/regression/tools/snapshots/test_ust_streaming b/tests/regression/tools/snapshots/test_ust_streaming -index 93b0957f3..69291ab4d 100755 ---- a/tests/regression/tools/snapshots/test_ust_streaming -+++ b/tests/regression/tools/snapshots/test_ust_streaming -@@ -37,7 +37,7 @@ NUM_TESTS=75 - source $TESTDIR/utils/utils.sh - - if [ ! -x "$TESTAPP_BIN" ]; then -- BAIL_OUT "No UST events binary detected." -+ plan_skip_all "No UST events binary detected." - fi - - function snapshot_add_output () -diff --git a/tests/regression/tools/snapshots/ust_test b/tests/regression/tools/snapshots/ust_test -index 755cef9e0..92f9f6cff 100755 ---- a/tests/regression/tools/snapshots/ust_test -+++ b/tests/regression/tools/snapshots/ust_test -@@ -34,7 +34,7 @@ TRACE_PATH=$(mktemp -d) - source $TESTDIR/utils/utils.sh - - if [ ! -x "$TESTAPP_BIN" ]; then -- BAIL_OUT "No UST events binary detected." -+ plan_skip_all "No UST events binary detected." - fi - - # Need the number of snapshot to do. -diff --git a/tests/regression/tools/streaming/test_high_throughput_limits b/tests/regression/tools/streaming/test_high_throughput_limits -index 32c3f1f2b..f54178923 100755 ---- a/tests/regression/tools/streaming/test_high_throughput_limits -+++ b/tests/regression/tools/streaming/test_high_throughput_limits -@@ -38,7 +38,7 @@ NUM_TESTS=104 - source $TESTDIR/utils/utils.sh - - if [ ! -x "$TESTAPP_BIN" ]; then -- BAIL_OUT "No UST events binary detected." -+ plan_skip_all "No UST events binary detected." - fi - - function set_bw_limit -diff --git a/tests/regression/tools/streaming/test_ust b/tests/regression/tools/streaming/test_ust -index a5d5b5e92..e1dd98ee7 100755 ---- a/tests/regression/tools/streaming/test_ust -+++ b/tests/regression/tools/streaming/test_ust -@@ -34,7 +34,7 @@ NUM_TESTS=16 - source $TESTDIR/utils/utils.sh - - if [ ! -x "$TESTAPP_BIN" ]; then -- BAIL_OUT "No UST events binary detected." -+ plan_skip_all "No UST events binary detected." - fi - - function lttng_create_session_uri -diff --git a/tests/regression/tools/tracefile-limits/test_tracefile_count b/tests/regression/tools/tracefile-limits/test_tracefile_count -index 6ada8580f..7553c7d1f 100755 ---- a/tests/regression/tools/tracefile-limits/test_tracefile_count -+++ b/tests/regression/tools/tracefile-limits/test_tracefile_count -@@ -33,7 +33,7 @@ PAGE_SIZE=$(getconf PAGE_SIZE) - source $TESTDIR/utils/utils.sh - - if [ ! -x "$TESTAPP_BIN" ]; then -- BAIL_OUT "No UST events binary detected." -+ plan_skip_all "No UST events binary detected." - fi - - function enable_lttng_channel_count_limit () -diff --git a/tests/regression/tools/tracefile-limits/test_tracefile_size b/tests/regression/tools/tracefile-limits/test_tracefile_size -index 3dddbe613..1089487ff 100755 ---- a/tests/regression/tools/tracefile-limits/test_tracefile_size -+++ b/tests/regression/tools/tracefile-limits/test_tracefile_size -@@ -33,7 +33,7 @@ NUM_TESTS=66 - source $TESTDIR/utils/utils.sh - - if [ ! -x "$TESTAPP_BIN" ]; then -- BAIL_OUT "No UST events binary detected." -+ plan_skip_all "No UST events binary detected." - fi - - function enable_lttng_channel_size_limit () -diff --git a/tests/regression/tools/wildcard/test_event_wildcard b/tests/regression/tools/wildcard/test_event_wildcard -index 61ea67a72..921a2301d 100755 ---- a/tests/regression/tools/wildcard/test_event_wildcard -+++ b/tests/regression/tools/wildcard/test_event_wildcard -@@ -97,42 +97,47 @@ print_test_banner "$TEST_DESC" - - start_lttng_sessiond - --diag "Test UST wildcard" -- - if [ ! -x "$TESTAPP_BIN" ]; then -- BAIL_OUT "No UST nevents binary detected." -+ skip_ust=0 -+else -+ skip_ust=1 - fi - --EVENT_NAME="tp:tptest" -+skip $skip_ust "No UST nevents binary detected." $NUM_UST_TESTS || -+{ -+ diag "Test UST wildcard" - --# non-matching --test_event_wildcard ust 0 'tp:abc*' --test_event_wildcard ust 0 '*abc' --test_event_wildcard ust 0 '*z*' --test_event_wildcard ust 0 '*\**' --test_event_wildcard ust 0 '*\*' --test_event_wildcard ust 0 '\**' --test_event_wildcard ust 0 '*:*tpte*s' --test_event_wildcard ust 0 'tp**tpTest' -+ EVENT_NAME="tp:tptest" - --# matching --test_event_wildcard ust 1 'tp:tp*' --test_event_wildcard ust 1 '*' --test_event_wildcard ust 1 'tp:tptest*' --test_event_wildcard ust 1 '**' --test_event_wildcard ust 1 '***' --test_event_wildcard ust 1 '*tptest' --test_event_wildcard ust 1 '**tptest' --test_event_wildcard ust 1 '*tpte*' --test_event_wildcard ust 1 '*tp*' --test_event_wildcard ust 1 '*tp**' --test_event_wildcard ust 1 '*:*tptest' --test_event_wildcard ust 1 '*:*tpte*t' --test_event_wildcard ust 1 't*p*:*t*e*s*t' --test_event_wildcard ust 1 '*t*p*:*t*e*s*t*' --test_event_wildcard ust 1 'tp*tptest' --test_event_wildcard ust 1 'tp**tptest' --test_event_wildcard ust 1 'tp*test' -+ # non-matching -+ test_event_wildcard ust 0 'tp:abc*' -+ test_event_wildcard ust 0 '*abc' -+ test_event_wildcard ust 0 '*z*' -+ test_event_wildcard ust 0 '*\**' -+ test_event_wildcard ust 0 '*\*' -+ test_event_wildcard ust 0 '\**' -+ test_event_wildcard ust 0 '*:*tpte*s' -+ test_event_wildcard ust 0 'tp**tpTest' -+ -+ # matching -+ test_event_wildcard ust 1 'tp:tp*' -+ test_event_wildcard ust 1 '*' -+ test_event_wildcard ust 1 'tp:tptest*' -+ test_event_wildcard ust 1 '**' -+ test_event_wildcard ust 1 '***' -+ test_event_wildcard ust 1 '*tptest' -+ test_event_wildcard ust 1 '**tptest' -+ test_event_wildcard ust 1 '*tpte*' -+ test_event_wildcard ust 1 '*tp*' -+ test_event_wildcard ust 1 '*tp**' -+ test_event_wildcard ust 1 '*:*tptest' -+ test_event_wildcard ust 1 '*:*tpte*t' -+ test_event_wildcard ust 1 't*p*:*t*e*s*t' -+ test_event_wildcard ust 1 '*t*p*:*t*e*s*t*' -+ test_event_wildcard ust 1 'tp*tptest' -+ test_event_wildcard ust 1 'tp**tptest' -+ test_event_wildcard ust 1 'tp*test' -+} - - if [ "$(id -u)" == "0" ]; then - isroot=1 --- -2.17.1 - diff --git a/meta/recipes-kernel/lttng/lttng-tools/0005-Tests-use-modprobe-to-test-for-the-presence-of-lttng.patch b/meta/recipes-kernel/lttng/lttng-tools/0005-Tests-use-modprobe-to-test-for-the-presence-of-lttng.patch deleted file mode 100644 index 16df3e610a..0000000000 --- a/meta/recipes-kernel/lttng/lttng-tools/0005-Tests-use-modprobe-to-test-for-the-presence-of-lttng.patch +++ /dev/null @@ -1,176 +0,0 @@ -From 9bc81a446d0a3ea9a884739eee48d3f14db3283c Mon Sep 17 00:00:00 2001 -From: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com> -Date: Wed, 28 Mar 2018 15:21:26 -0400 -Subject: [PATCH lttng-tools] Tests: use modprobe to test for the presence of - lttng-modules -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Upstream-Status: Backport [28702730192ae1ded06105c54c5dc] - -Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com> -Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com> ---- - tests/regression/tools/regen-metadata/test_kernel | 8 ++------ - tests/regression/tools/regen-statedump/test_kernel | 7 +------ - tests/regression/tools/snapshots/test_kernel | 9 +++------ - tests/regression/tools/snapshots/test_kernel_streaming | 8 ++------ - tests/regression/tools/streaming/test_kernel | 8 ++------ - tests/utils/utils.sh | 10 ++++++++++ - 6 files changed, 20 insertions(+), 30 deletions(-) - -diff --git a/tests/regression/tools/regen-metadata/test_kernel b/tests/regression/tools/regen-metadata/test_kernel -index fd139aeef..1849b9cd0 100755 ---- a/tests/regression/tools/regen-metadata/test_kernel -+++ b/tests/regression/tools/regen-metadata/test_kernel -@@ -28,12 +28,6 @@ NUM_TESTS=18 - - source $TESTDIR/utils/utils.sh - --# LTTng kernel modules check --out=`ls /lib/modules/$(uname -r)/extra | grep lttng` --if [ -z "$out" ]; then -- BAIL_OUT "LTTng modules not detected." --fi -- - function lttng_create_session_uri - { - # Create session with default path -@@ -91,6 +85,8 @@ fi - - skip $isroot "Root access is needed. Skipping all kernel streaming tests." $NUM_TESTS || - { -+ validate_lttng_modules_present -+ - start_lttng_relayd "-o $TRACE_PATH" - start_lttng_sessiond - modprobe lttng-test -diff --git a/tests/regression/tools/regen-statedump/test_kernel b/tests/regression/tools/regen-statedump/test_kernel -index 85afe76a1..50054eb07 100755 ---- a/tests/regression/tools/regen-statedump/test_kernel -+++ b/tests/regression/tools/regen-statedump/test_kernel -@@ -29,12 +29,6 @@ NUM_TESTS=11 - - source $TESTDIR/utils/utils.sh - --# LTTng kernel modules check --out=`ls /lib/modules/$(uname -r)/extra | grep lttng` --if [ -z "$out" ]; then -- BAIL_OUT "LTTng modules not detected." --fi -- - function test_kernel_local () - { - diag "Test kernel local with statedump regeneration" -@@ -64,6 +58,7 @@ fi - - skip $isroot "Root access is needed. Skipping all kernel streaming tests." $NUM_TESTS || - { -+ validate_lttng_modules_present - start_lttng_sessiond - modprobe lttng-test - -diff --git a/tests/regression/tools/snapshots/test_kernel b/tests/regression/tools/snapshots/test_kernel -index 886c4557a..ff563100b 100755 ---- a/tests/regression/tools/snapshots/test_kernel -+++ b/tests/regression/tools/snapshots/test_kernel -@@ -29,12 +29,6 @@ NUM_TESTS=2060 - - source $TESTDIR/utils/utils.sh - --# LTTng kernel modules check --out=`ls /lib/modules/$(uname -r)/extra | grep lttng` --if [ -z "$out" ]; then -- BAIL_OUT "LTTng modules not detected." --fi -- - function test_kernel_local_snapshot () - { - diag "Test local kernel snapshots" -@@ -241,6 +235,9 @@ fi - - skip $isroot "Root access is needed. Skipping all kernel snapshot tests." $NUM_TESTS || - { -+ -+ validate_lttng_modules_present -+ - start_lttng_sessiond - - #tests=( test_kernel_1000_local_snapshots ) -diff --git a/tests/regression/tools/snapshots/test_kernel_streaming b/tests/regression/tools/snapshots/test_kernel_streaming -index 7b96ef270..1d97519aa 100755 ---- a/tests/regression/tools/snapshots/test_kernel_streaming -+++ b/tests/regression/tools/snapshots/test_kernel_streaming -@@ -29,12 +29,6 @@ NUM_TESTS=61 - - source $TESTDIR/utils/utils.sh - --# LTTng kernel modules check --out=`ls /lib/modules/$(uname -r)/extra | grep lttng` --if [ -z "$out" ]; then -- BAIL_OUT "LTTng modules not detected." --fi -- - function snapshot_add_output () - { - local sess_name=$1 -@@ -169,6 +163,8 @@ fi - - skip $isroot "Root access is needed. Skipping all kernel streaming tests." $NUM_TESTS || - { -+ validate_lttng_modules_present -+ - start_lttng_relayd "-o $TRACE_PATH" - start_lttng_sessiond - -diff --git a/tests/regression/tools/streaming/test_kernel b/tests/regression/tools/streaming/test_kernel -index d54bcedf5..6bb23d9f5 100755 ---- a/tests/regression/tools/streaming/test_kernel -+++ b/tests/regression/tools/streaming/test_kernel -@@ -28,12 +28,6 @@ NUM_TESTS=10 - - source $TESTDIR/utils/utils.sh - --# LTTng kernel modules check --out=`ls /lib/modules/$(uname -r)/extra | grep lttng` --if [ -z "$out" ]; then -- BAIL_OUT "LTTng modules not detected." --fi -- - function lttng_create_session_uri - { - # Create session with default path -@@ -80,6 +74,8 @@ fi - - skip $isroot "Root access is needed. Skipping all kernel streaming tests." $NUM_TESTS || - { -+ validate_lttng_modules_present -+ - start_lttng_relayd "-o $TRACE_PATH" - start_lttng_sessiond - -diff --git a/tests/utils/utils.sh b/tests/utils/utils.sh -index af63824ce..26e59e383 100644 ---- a/tests/utils/utils.sh -+++ b/tests/utils/utils.sh -@@ -125,6 +125,16 @@ function conf_proc_count() - echo - } - -+# Check if base lttng-modules are present. -+# Bail out on failure -+function validate_lttng_modules_present () -+{ -+ modprobe -n lttng-tracer 2>/dev/null -+ if [ $? -ne 0 ]; then -+ BAIL_OUT "LTTng modules not detected." -+ fi -+} -+ - function enable_kernel_lttng_event - { - local withtap="$1" --- -2.17.1 - diff --git a/meta/recipes-kernel/lttng/lttng-tools/0006-Tests-check-for-lttng-modules-presence.patch b/meta/recipes-kernel/lttng/lttng-tools/0006-Tests-check-for-lttng-modules-presence.patch deleted file mode 100644 index e07c227f46..0000000000 --- a/meta/recipes-kernel/lttng/lttng-tools/0006-Tests-check-for-lttng-modules-presence.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 92f93238f1df005aadc98e105c0dd0e04a5955a7 Mon Sep 17 00:00:00 2001 -From: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com> -Date: Mon, 25 Mar 2019 14:24:51 -0400 -Subject: [2/2] tests: check for lttng-modules presence - -Upstream-status: Accepted [5da3fc8579a9f93ea4767729a107784bf2d034ae] -Backported to 2.11 and 2.10 - -Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com> ---- - tests/regression/tools/notification/test_notification_kernel | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/tests/regression/tools/notification/test_notification_kernel b/tests/regression/tools/notification/test_notification_kernel -index 6d7f256ae..e7368df26 100755 ---- a/tests/regression/tools/notification/test_notification_kernel -+++ b/tests/regression/tools/notification/test_notification_kernel -@@ -108,6 +108,7 @@ function kernel_test - } - - if [ "$(id -u)" == "0" ]; then -+ validate_lttng_modules_present - kernel_test - else - # Kernel tests are skipped. --- -2.17.1 - diff --git a/meta/recipes-kernel/lttng/lttng-tools/0007-Fix-getgrnam-is-not-MT-Safe-use-getgrnam_r.patch b/meta/recipes-kernel/lttng/lttng-tools/0007-Fix-getgrnam-is-not-MT-Safe-use-getgrnam_r.patch deleted file mode 100644 index 5437de26e8..0000000000 --- a/meta/recipes-kernel/lttng/lttng-tools/0007-Fix-getgrnam-is-not-MT-Safe-use-getgrnam_r.patch +++ /dev/null @@ -1,345 +0,0 @@ -From 10e8001ad876d8cb3b5a17c7492e713bbc047975 Mon Sep 17 00:00:00 2001 -From: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com> -Date: Thu, 28 Mar 2019 18:31:29 -0400 -Subject: [PATCH] Fix: getgrnam is not MT-Safe, use getgrnam_r - -Running the test suite under a Yocto musl build resulted in musl -coredump due to double freeing. - -We get the following backtraces: - -0 a_crash () at ./arch/x86_64/atomic_arch.h:108 -1 unmap_chunk (self=<optimized out>) at src/malloc/malloc.c:515 -2 free (p=<optimized out>) at src/malloc/malloc.c:526 -3 0x00007f46d9dc3849 in __getgrent_a (f=f@entry=0x7f46d9d1f7e0, gr=gr@entry=0x7f46d9e24460 <gr>, line=line@entry=0x7f46d9e26058 <line>, size=size@entry=0x7f46d92db550, mem=mem@entry=0x7f46d9e26050 <mem>, nmem=nmem@entry=0x7f46d92db558, res=0x7f46d92db548) at src/passwd/getgrent_a.c:45 -4 0x00007f46d9dc2e6b in __getgr_a (name=0x487242 "tracing", gid=gid@entry=0, gr=gr@entry=0x7f46d9e24460 <gr>, buf=buf@entry=0x7f46d9e26058 <line>, size=size@entry=0x7f46d92db550, mem=mem@entry=0x7f46d9e26050 <mem>, nmem=0x7f46d92db558, res=0x7f46d92db548) at src/passwd/getgr_a.c:30 -5 0x00007f46d9dc3733 in getgrnam (name=<optimized out>) at src/passwd/getgrent.c:37 -6 0x0000000000460b29 in utils_get_group_id (name=<optimized out>) at ../../../lttng-tools-2.10.6/src/common/utils.c:1241 -7 0x000000000044ee69 in thread_manage_health (data=<optimized out>) at ../../../../lttng-tools-2.10.6/src/bin/lttng-sessiond/main.c:4115 -8 0x00007f46d9de1541 in start (p=<optimized out>) at src/thread/pthread_create.c:195 -9 0x00007f46d9dee661 in __clone () at src/thread/x86_64/clone.s:22 - -From another run: - -0 a_crash () at ./arch/x86_64/atomic_arch.h:108 -1 unmap_chunk (self=<optimized out>) at src/malloc/malloc.c:515 -2 free (p=<optimized out>) at src/malloc/malloc.c:526 -3 0x00007f5abc210849 in __getgrent_a (f=f@entry=0x7f5abc2733e0, gr=gr@entry=0x7f5abc271460 <gr>, line=line@entry=0x7f5abc273058 <line>, size=size@entry=0x7f5abaef5510, mem=mem@entry=0x7f5abc273050 <mem>, nmem=nmem@entry=0x7f5abaef5518, res=0x7f5abaef5508) at src/passwd/getgrent_a.c:45 -4 0x00007f5abc20fe6b in __getgr_a (name=0x487242 "tracing", gid=gid@entry=0, gr=gr@entry=0x7f5abc271460 <gr>, buf=buf@entry=0x7f5abc273058 <line>, size=size@entry=0x7f5abaef5510, mem=mem@entry=0x7f5abc273050 <mem>, nmem=0x7f5abaef5518, res=0x7f5abaef5508) at src/passwd/getgr_a.c:30 -5 0x00007f5abc210733 in getgrnam (name=<optimized out>) at src/passwd/getgrent.c:37 -6 0x0000000000460b29 in utils_get_group_id (name=<optimized out>) at ../../../lttng-tools-2.10.6/src/common/utils.c:1241 -7 0x000000000042dee4 in notification_channel_socket_create () at ../../../../lttng-tools-2.10.6/src/bin/lttng-sessiond/notification-thread.c:238 -8 init_thread_state (state=0x7f5abaef5560, handle=0x7f5abbf9be40) at ../../../../lttng-tools-2.10.6/src/bin/lttng-sessiond/notification-thread.c:375 -9 thread_notification (data=0x7f5abbf9be40) at ../../../../lttng-tools-2.10.6/src/bin/lttng-sessiond/notification-thread.c:495 -10 0x00007f5abc22e541 in start (p=<optimized out>) at src/thread/pthread_create.c:195 -11 0x00007f5abc23b661 in __clone () at src/thread/x86_64/clone.s:22 - -The problem was easily reproducible (~6 crash on ~300 runs). A prototype fix -using mutex around the getgrnam yielded no crash in over 1000 runs. This -patch yielded the same results as the prototype fix. - -Unfortunately we cannot rely on a mutex in liblttng-ctl since we cannot -enforce the locking for the application using the lib. - -Use getgrnam_r instead. - -The previous implementation of utils_get_group_id returned the gid of -the root group (0) on error/not found. lttng_check_tracing_group needs -to know if an error/not found occured, returning the root group is not -enough. We now return the gid via the passed parameter. The caller is -responsible for either defaulting to the root group or propagating the -error. - -We also do not want to warn when used in liblttng-ctl context. We might -want to move the warning elsewhere in the future. For now, pass a bool -if we need to warn or not. - -Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com> ---- - src/bin/lttng-consumerd/health-consumerd.c | 10 ++- - src/bin/lttng-relayd/health-relayd.c | 20 ++++-- - src/bin/lttng-sessiond/main.c | 24 +++++-- - src/bin/lttng-sessiond/notification-thread.c | 10 ++- - src/common/utils.c | 75 +++++++++++++++++--- - src/common/utils.h | 4 +- - src/lib/lttng-ctl/lttng-ctl.c | 8 +-- - 7 files changed, 122 insertions(+), 29 deletions(-) - -diff --git a/src/bin/lttng-consumerd/health-consumerd.c b/src/bin/lttng-consumerd/health-consumerd.c -index 1e2f31e4..6045401a 100644 ---- a/src/bin/lttng-consumerd/health-consumerd.c -+++ b/src/bin/lttng-consumerd/health-consumerd.c -@@ -184,8 +184,14 @@ void *thread_manage_health(void *data) - is_root = !getuid(); - if (is_root) { - /* lttng health client socket path permissions */ -- ret = chown(health_unix_sock_path, 0, -- utils_get_group_id(tracing_group_name)); -+ gid_t gid; -+ -+ ret = utils_get_group_id(tracing_group_name, true, &gid); -+ if (ret) { -+ gid = 0; /* Default to root group. */ -+ } -+ -+ ret = chown(health_unix_sock_path, 0, gid); - if (ret < 0) { - ERR("Unable to set group on %s", health_unix_sock_path); - PERROR("chown"); -diff --git a/src/bin/lttng-relayd/health-relayd.c b/src/bin/lttng-relayd/health-relayd.c -index ba996621..962e88c4 100644 ---- a/src/bin/lttng-relayd/health-relayd.c -+++ b/src/bin/lttng-relayd/health-relayd.c -@@ -105,8 +105,14 @@ static int create_lttng_rundir_with_perm(const char *rundir) - int is_root = !getuid(); - - if (is_root) { -- ret = chown(rundir, 0, -- utils_get_group_id(tracing_group_name)); -+ gid_t gid; -+ -+ ret = utils_get_group_id(tracing_group_name, true, &gid); -+ if (ret) { -+ gid = 0; /* Default to root group.*/ -+ } -+ -+ ret = chown(rundir, 0, gid); - if (ret < 0) { - ERR("Unable to set group on %s", rundir); - PERROR("chown"); -@@ -256,8 +262,14 @@ void *thread_manage_health(void *data) - is_root = !getuid(); - if (is_root) { - /* lttng health client socket path permissions */ -- ret = chown(health_unix_sock_path, 0, -- utils_get_group_id(tracing_group_name)); -+ gid_t gid; -+ -+ ret = utils_get_group_id(tracing_group_name, true, &gid); -+ if (ret) { -+ gid = 0; /* Default to root group */ -+ } -+ -+ ret = chown(health_unix_sock_path, 0, gid); - if (ret < 0) { - ERR("Unable to set group on %s", health_unix_sock_path); - PERROR("chown"); -diff --git a/src/bin/lttng-sessiond/main.c b/src/bin/lttng-sessiond/main.c -index fa6fa483..49307064 100644 ---- a/src/bin/lttng-sessiond/main.c -+++ b/src/bin/lttng-sessiond/main.c -@@ -4112,8 +4112,14 @@ static void *thread_manage_health(void *data) - - if (is_root) { - /* lttng health client socket path permissions */ -- ret = chown(config.health_unix_sock_path.value, 0, -- utils_get_group_id(config.tracing_group_name.value)); -+ gid_t gid; -+ -+ ret = utils_get_group_id(config.tracing_group_name.value, true, &gid); -+ if (ret) { -+ gid = 0; /* Default to root group */ -+ } -+ -+ ret = chown(config.health_unix_sock_path.value, 0, &gid); - if (ret < 0) { - ERR("Unable to set group on %s", config.health_unix_sock_path.value); - PERROR("chown"); -@@ -5238,7 +5244,10 @@ static int set_permissions(char *rundir) - int ret; - gid_t gid; - -- gid = utils_get_group_id(config.tracing_group_name.value); -+ ret = utils_get_group_id(config.tracing_group_name.value, true, &gid); -+ if (ret) { -+ gid = 0; /* Default to root group */ -+ } - - /* Set lttng run dir */ - ret = chown(rundir, 0, gid); -@@ -5349,7 +5358,14 @@ static int set_consumer_sockets(struct consumer_data *consumer_data) - goto error; - } - if (is_root) { -- ret = chown(path, 0, utils_get_group_id(config.tracing_group_name.value)); -+ gid_t gid; -+ -+ ret = utils_get_group_id(config.tracing_group_name.value, true, &gid); -+ if (ret) { -+ gid = 0; /* Default to root group */ -+ } -+ -+ ret = chown(path, 0, gid); - if (ret < 0) { - ERR("Unable to set group on %s", path); - PERROR("chown"); -diff --git a/src/bin/lttng-sessiond/notification-thread.c b/src/bin/lttng-sessiond/notification-thread.c -index 92ac597f..18a264d9 100644 ---- a/src/bin/lttng-sessiond/notification-thread.c -+++ b/src/bin/lttng-sessiond/notification-thread.c -@@ -235,8 +235,14 @@ int notification_channel_socket_create(void) - } - - if (getuid() == 0) { -- ret = chown(sock_path, 0, -- utils_get_group_id(config.tracing_group_name.value)); -+ gid_t gid; -+ -+ ret = utils_get_group_id(config.tracing_group_name.value, true, &gid); -+ if (ret) { -+ gid = 0; /* Default to root group. */ -+ } -+ -+ ret = chown(sock_path, 0, gid); - if (ret) { - ERR("Failed to set the notification channel socket's group"); - ret = -1; -diff --git a/src/common/utils.c b/src/common/utils.c -index c0bb031e..778bc00f 100644 ---- a/src/common/utils.c -+++ b/src/common/utils.c -@@ -1231,24 +1231,77 @@ size_t utils_get_current_time_str(const char *format, char *dst, size_t len) - } - - /* -- * Return the group ID matching name, else 0 if it cannot be found. -+ * Return 0 on success and set *gid to the group_ID matching the passed name. -+ * Else -1 if it cannot be found or an error occurred. - */ - LTTNG_HIDDEN --gid_t utils_get_group_id(const char *name) -+int utils_get_group_id(const char *name, bool warn, gid_t *gid) - { -- struct group *grp; -+ static volatile int warn_once; - -- grp = getgrnam(name); -- if (!grp) { -- static volatile int warn_once; -+ int ret; -+ long sys_len; -+ size_t len; -+ struct group grp; -+ struct group *result; -+ char *buffer = NULL; - -- if (!warn_once) { -- WARN("No tracing group detected"); -- warn_once = 1; -+ /* Get the system limit if it exists */ -+ sys_len = sysconf(_SC_GETGR_R_SIZE_MAX); -+ if (sys_len == -1) { -+ len = 1024; -+ } else { -+ len = (size_t) sys_len; -+ } -+ -+ buffer = malloc(len); -+ if (!buffer) { -+ PERROR("getgrnam_r malloc"); -+ ret = -1; -+ goto error; -+ } -+ -+ while ((ret = getgrnam_r(name, &grp, buffer, len, &result)) == ERANGE) -+ { -+ /* Buffer is not big enough, increase its size. */ -+ size_t new_len = 2 * len; -+ char *new_buffer = NULL; -+ if (new_len < len) { -+ ERR("getgrnam_r buffer size overflow"); -+ ret = -1; -+ goto error; -+ } -+ len = new_len; -+ new_buffer = realloc(buffer, len); -+ if (!new_buffer) { -+ PERROR("getgrnam_r realloc"); -+ ret = -1; -+ goto error; - } -- return 0; -+ buffer = new_buffer; -+ } -+ if (ret != 0) { -+ PERROR("getgrnam_r"); -+ ret = -1; -+ goto error; -+ } -+ -+ /* Group not found. */ -+ if (!result) { -+ ret = -1; -+ goto error; -+ } -+ -+ *gid = result->gr_gid; -+ ret = 0; -+ -+error: -+ free(buffer); -+ if (ret && warn && !warn_once) { -+ WARN("No tracing group detected"); -+ warn_once = 1; - } -- return grp->gr_gid; -+ return ret; - } - - /* -diff --git a/src/common/utils.h b/src/common/utils.h -index 18f19ef1..9c72431d 100644 ---- a/src/common/utils.h -+++ b/src/common/utils.h -@@ -22,6 +22,8 @@ - #include <unistd.h> - #include <stdint.h> - #include <getopt.h> -+#include <stdbool.h> -+#include <sys/types.h> - - #define KIBI_LOG2 10 - #define MEBI_LOG2 20 -@@ -52,7 +54,7 @@ int utils_get_count_order_u64(uint64_t x); - char *utils_get_home_dir(void); - char *utils_get_user_home_dir(uid_t uid); - size_t utils_get_current_time_str(const char *format, char *dst, size_t len); --gid_t utils_get_group_id(const char *name); -+int utils_get_group_id(const char *name, bool warn, gid_t *gid); - char *utils_generate_optstring(const struct option *long_options, - size_t opt_count); - int utils_create_lock_file(const char *filepath); -diff --git a/src/lib/lttng-ctl/lttng-ctl.c b/src/lib/lttng-ctl/lttng-ctl.c -index 2d84aad9..561b0bcf 100644 ---- a/src/lib/lttng-ctl/lttng-ctl.c -+++ b/src/lib/lttng-ctl/lttng-ctl.c -@@ -208,15 +208,13 @@ end: - LTTNG_HIDDEN - int lttng_check_tracing_group(void) - { -- struct group *grp_tracing; /* no free(). See getgrnam(3) */ -- gid_t *grp_list; -+ gid_t *grp_list, tracing_gid; - int grp_list_size, grp_id, i; - int ret = -1; - const char *grp_name = tracing_group; - - /* Get GID of group 'tracing' */ -- grp_tracing = getgrnam(grp_name); -- if (!grp_tracing) { -+ if (utils_get_group_id(grp_name, false, &tracing_gid)) { - /* If grp_tracing is NULL, the group does not exist. */ - goto end; - } -@@ -241,7 +239,7 @@ int lttng_check_tracing_group(void) - } - - for (i = 0; i < grp_list_size; i++) { -- if (grp_list[i] == grp_tracing->gr_gid) { -+ if (grp_list[i] == tracing_gid) { - ret = 1; - break; - } --- -2.17.1 - diff --git a/meta/recipes-kernel/lttng/lttng-tools/disable-tests.patch b/meta/recipes-kernel/lttng/lttng-tools/disable-tests.patch new file mode 100644 index 0000000000..3a77ea2e43 --- /dev/null +++ b/meta/recipes-kernel/lttng/lttng-tools/disable-tests.patch @@ -0,0 +1,34 @@ +Upstream-Status: Inappropriate [need to root cause the test hangs] + +We keep seeing hangs in the tools/notifications tests on x86 and arm for +a variety of distros. Exclude them for now to work out if this is the +only place we see them and give SWAT/triage a break from the stream +of them. + +https://bugzilla.yoctoproject.org/show_bug.cgi?id=14263 + +Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> + +Index: lttng-tools-2.13.1/tests/regression/Makefile.am +=================================================================== +--- lttng-tools-2.13.1.orig/tests/regression/Makefile.am ++++ lttng-tools-2.13.1/tests/regression/Makefile.am +@@ -29,18 +29,6 @@ TESTS = tools/base-path/test_ust \ + tools/crash/test_crash \ + tools/regen-metadata/test_ust \ + tools/regen-statedump/test_ust \ +- tools/notification/test_notification_ust_error \ +- tools/notification/test_notification_ust_buffer_usage \ +- tools/notification/test_notification_ust_capture \ +- tools/notification/test_notification_ust_event_rule_condition_exclusion \ +- tools/notification/test_notification_kernel_error \ +- tools/notification/test_notification_kernel_buffer_usage \ +- tools/notification/test_notification_kernel_capture \ +- tools/notification/test_notification_kernel_instrumentation \ +- tools/notification/test_notification_kernel_syscall \ +- tools/notification/test_notification_notifier_discarded_count \ +- tools/notification/test_notification_kernel_userspace_probe \ +- tools/notification/test_notification_multi_app \ + tools/rotation/test_ust \ + tools/rotation/test_kernel \ + tools/rotation/test_save_load_mi \ diff --git a/meta/recipes-kernel/lttng/lttng-tools/run-ptest b/meta/recipes-kernel/lttng/lttng-tools/run-ptest index dbb18820a4..39d93e2bbf 100755 --- a/meta/recipes-kernel/lttng/lttng-tools/run-ptest +++ b/meta/recipes-kernel/lttng/lttng-tools/run-ptest @@ -1,6 +1,45 @@ #!/bin/sh # Without --ignore-exit, the tap harness causes any FAILs within a # test plan to raise ERRORs; this is just noise. -makeargs="LOG_DRIVER_FLAGS=--ignore-exit top_srcdir=$PWD top_builddir=$PWD" -make -k -t all >/dev/null 2>&1 -exec make -k -s $makeargs check 2>/dev/null + +#Detecting whether current system has lttng kernel modules +LTTNG_KMOD_PATH=/lib/modules/$(uname -r)/kernel/lttng-modules/lttng-tracer.ko +function validate_lttng_modules_present() +{ + # Check for loadable modules. + if [ -f "$LTTNG_KMOD_PATH" ]; then + return 0 + fi + + # Check for builtin modules. + ls /proc/lttng > /dev/null 2>&1 + if [ $? -eq 0 ]; then + return 0 + fi + + return 1 +} + +export LD_LIBRARY_PATH=FIXMEPTESTPATH/tests/utils/testapp/userspace-probe-elf-binary/.libs +makeargs="LOG_DRIVER_FLAGS=--ignore-exit top_srcdir=FIXMEPTESTPATH top_builddir=FIXMEPTESTPATH" + +#If current system doesn't have lttng kernel modules, disable lttng kernel related tests. +validate_lttng_modules_present || { + makeargs="$makeargs LTTNG_TOOLS_DISABLE_KERNEL_TESTS=1" +} + +make -k -t all >error.log 2>&1 +# Can specify a test e.g.: +# -C tests/regression/ check TESTS='kernel/test_callstack' +make -k -s $makeargs check 2>error.log | sed -e 's#/tmp/tmp\...........#/tmp/tmp.XXXXXXXXXX#g' +exitcode=$? +if [ -e error.log ]; then + cat error.log +fi +if [ -e tests/unit/test-suite.log ]; then + cat tests/unit/test-suite.log +fi +if [ -e tests/regression/test-suite.log ]; then + cat tests/regression/test-suite.log +fi +exit $exitcode diff --git a/meta/recipes-kernel/lttng/lttng-tools/x32.patch b/meta/recipes-kernel/lttng/lttng-tools/x32.patch deleted file mode 100644 index 42cebf94ac..0000000000 --- a/meta/recipes-kernel/lttng/lttng-tools/x32.patch +++ /dev/null @@ -1,36 +0,0 @@ -Fix build for x32 - -Signed-off-by: Christopher Larson <chris_larson@mentor.com> - -Fix build error of src/common/utils.c for x32. - -Upstream-Status: Submitted [https://github.com/lttng/lttng-tools/pull/150] - -Signed-off-by: Kai Kang <kai.kang@windriver.com> - -diff --git a/src/bin/lttng/utils.c b/src/bin/lttng/utils.c -index 0e96ef0c..5c79c8c7 100644 ---- a/src/bin/lttng/utils.c -+++ b/src/bin/lttng/utils.c -@@ -158,7 +158,7 @@ unsigned int fls_u32(uint32_t x) - #define HAS_FLS_U32 - #endif - --#if defined(__x86_64) -+#if defined(__x86_64) && !defined(__ILP32__) - static inline - unsigned int fls_u64(uint64_t x) - { -diff --git a/src/common/utils.c b/src/common/utils.c -index 08139e5e..3c389981 100644 ---- a/src/common/utils.c -+++ b/src/common/utils.c -@@ -1223,7 +1223,7 @@ static inline unsigned int fls_u32(uint32_t x) - #define HAS_FLS_U32 - #endif - --#if defined(__x86_64) -+#if defined(__x86_64) && !defined(__ILP32__) - static inline - unsigned int fls_u64(uint64_t x) - { diff --git a/meta/recipes-kernel/lttng/lttng-tools_2.10.6.bb b/meta/recipes-kernel/lttng/lttng-tools_2.13.13.bb index a3fabb20ec..174dec036e 100644 --- a/meta/recipes-kernel/lttng/lttng-tools_2.10.6.bb +++ b/meta/recipes-kernel/lttng/lttng-tools_2.13.13.bb @@ -3,81 +3,91 @@ SUMMARY = "Linux Trace Toolkit Control" DESCRIPTION = "The Linux trace toolkit is a suite of tools designed \ to extract program execution details from the Linux operating system \ and interpret them." +HOMEPAGE = "https://github.com/lttng/lttng-tools" -LICENSE = "GPLv2 & LGPLv2.1" -LIC_FILES_CHKSUM = "file://LICENSE;md5=01d7fc4496aacf37d90df90b90b0cac1 \ - file://gpl-2.0.txt;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ - file://lgpl-2.1.txt;md5=0f0d71500e6a57fd24d825f33242b9ca" +LICENSE = "GPL-2.0-only & LGPL-2.1-only" +LIC_FILES_CHKSUM = "file://LICENSE;md5=40ef17463fbd6f377db3c47b1cbaded8 \ + file://LICENSES/GPL-2.0;md5=e68f69a54b44ba526ad7cb963e18fbce \ + file://LICENSES/LGPL-2.1;md5=9920968d0f2ff585ce61fae30344dd95" -DEPENDS = "liburcu popt libxml2 util-linux" -RDEPENDS_${PN} = "libgcc" -RDEPENDS_${PN}-ptest += "make perl bash gawk ${PN} babeltrace procps perl-module-overloading coreutils util-linux kmod" -RDEPENDS_${PN}-ptest_append_libc-glibc = " glibc-utils" -RDEPENDS_${PN}-ptest_append_libc-musl = " musl-utils" +include lttng-platforms.inc + +DEPENDS = "liburcu popt libxml2 util-linux bison-native" +RDEPENDS:${PN} = "libgcc" +RRECOMMENDS:${PN} += "${LTTNGMODULES}" +RDEPENDS:${PN}-ptest += "make perl bash gawk babeltrace procps perl-module-overloading coreutils util-linux kmod ${LTTNGMODULES} sed python3-core grep binutils" +RDEPENDS:${PN}-ptest:append:libc-glibc = " glibc-utils" +RDEPENDS:${PN}-ptest:append:libc-musl = " musl-utils" # babelstats.pl wants getopt-long -RDEPENDS_${PN}-ptest += "perl-module-getopt-long" +RDEPENDS:${PN}-ptest += "perl-module-getopt-long" PYTHON_OPTION = "am_cv_python_pyexecdir='${PYTHON_SITEPACKAGES_DIR}' \ am_cv_python_pythondir='${PYTHON_SITEPACKAGES_DIR}' \ PYTHON_INCLUDE='-I${STAGING_INCDIR}/python${PYTHON_BASEVERSION}${PYTHON_ABI}' \ " -PACKAGECONFIG ??= "lttng-ust" +PACKAGECONFIG ??= "${LTTNGUST} kmod" PACKAGECONFIG[python] = "--enable-python-bindings ${PYTHON_OPTION},,python3 swig-native" PACKAGECONFIG[lttng-ust] = "--with-lttng-ust, --without-lttng-ust, lttng-ust" PACKAGECONFIG[kmod] = "--with-kmod, --without-kmod, kmod" PACKAGECONFIG[manpages] = "--enable-man-pages, --disable-man-pages, asciidoc-native xmlto-native libxslt-native" -PACKAGECONFIG_remove_arc = "lttng-ust" SRC_URI = "https://lttng.org/files/lttng-tools/lttng-tools-${PV}.tar.bz2 \ - file://x32.patch \ + file://0001-tests-do-not-strip-a-helper-library.patch \ file://run-ptest \ file://lttng-sessiond.service \ - file://0001-Fix-tests-link-libpause_consumer-on-liblttng-ctl.patch \ - file://0002-Fix-test-skip-test_getcpu_override-on-single-thread-.patch \ - file://0003-Fix-test-unit-the-tree-origin-can-be-a-symlink-itsel.patch \ - file://0004-Skip-when-testapp-is-not-present.patch\ - file://0005-Tests-use-modprobe-to-test-for-the-presence-of-lttng.patch \ - file://0006-Tests-check-for-lttng-modules-presence.patch \ - file://0007-Fix-getgrnam-is-not-MT-Safe-use-getgrnam_r.patch \ + file://disable-tests.patch \ + file://0001-compat-Define-off64_t-as-off_t-on-linux.patch \ + file://0001-tests-add-check_skip_kernel_test-to-check-root-user-.patch \ + file://0001-Fix-rotation-destroy-flush-fix-session-daemon-abort-.patch \ " -SRC_URI[md5sum] = "e88c521b5da6bb48a8187af633336ecc" -SRC_URI[sha256sum] = "f05df52bbebf8ce88d1b29e9e98cfc957d2ed738a345118018237ebdb581537c" +SRC_URI[sha256sum] = "ff5f4f00b081dac66092afe8e72b7c790670931cf1c1ee0deaa7f80fbc53883e" inherit autotools ptest pkgconfig useradd python3-dir manpages systemd -SYSTEMD_SERVICE_${PN} = "lttng-sessiond.service" +CACHED_CONFIGUREVARS = "PGREP=/usr/bin/pgrep" + +SYSTEMD_SERVICE:${PN} = "lttng-sessiond.service" SYSTEMD_AUTO_ENABLE = "disable" USERADD_PACKAGES = "${PN}" -GROUPADD_PARAM_${PN} = "tracing" +GROUPADD_PARAM:${PN} = "tracing" -FILES_${PN} += "${libdir}/lttng/libexec/* ${datadir}/xml/lttng \ +FILES:${PN} += "${libdir}/lttng/libexec/* ${datadir}/xml/lttng \ ${PYTHON_SITEPACKAGES_DIR}/*" -FILES_${PN}-staticdev += "${PYTHON_SITEPACKAGES_DIR}/*.a" -FILES_${PN}-dev += "${PYTHON_SITEPACKAGES_DIR}/*.la" +FILES:${PN}-staticdev += "${PYTHON_SITEPACKAGES_DIR}/*.a" +FILES:${PN}-dev += "${PYTHON_SITEPACKAGES_DIR}/*.la" # Since files are installed into ${libdir}/lttng/libexec we match # the libexec insane test so skip it. # Python module needs to keep _lttng.so -INSANE_SKIP_${PN} = "libexec dev-so" -INSANE_SKIP_${PN}-dbg = "libexec" +INSANE_SKIP:${PN} = "libexec dev-so" +INSANE_SKIP:${PN}-dbg = "libexec" -do_install_append () { +PRIVATE_LIBS:${PN}-ptest = "libfoo.so" + +do_install:append () { # install systemd unit file - install -d ${D}${systemd_unitdir}/system - install -m 0644 ${WORKDIR}/lttng-sessiond.service ${D}${systemd_unitdir}/system + install -d ${D}${systemd_system_unitdir} + install -m 0644 ${WORKDIR}/lttng-sessiond.service ${D}${systemd_system_unitdir} } do_install_ptest () { - for f in Makefile tests/Makefile tests/utils/utils.sh tests/regression/tools/save-load/load-42*.lttng tests/regression/tools/save-load/configuration/load-42*.lttng ; do + for f in Makefile tests/Makefile tests/utils/utils.sh tests/regression/tools/save-load/*.lttng \ + tests/regression/tools/save-load/configuration/load-42*.lttng tests/regression/tools/health/test_health.sh \ + tests/regression/tools/metadata/utils.sh tests/regression/tools/rotation/rotate_utils.sh \ + tests/regression/tools/notification/util_event_generator.sh \ + tests/regression/tools/base-path/*.lttng; do install -D "${B}/$f" "${D}${PTEST_PATH}/$f" done - for f in config/tap-driver.sh config/test-driver src/common/config/session.xsd src/common/mi-lttng-3.0.xsd; do + for f in tests/utils/tap-driver.sh config/test-driver src/common/config/session.xsd src/common/mi-lttng-4.1.xsd; do install -D "${S}/$f" "${D}${PTEST_PATH}/$f" done + # Patch in the correct path for the custom libraries a helper executable needs + sed -i -e 's!FIXMEPTESTPATH!${PTEST_PATH}!g' "${D}${PTEST_PATH}/run-ptest" + # Prevent 'make check' from recursing into non-test subdirectories. sed -i -e 's!^SUBDIRS = .*!SUBDIRS = tests!' "${D}${PTEST_PATH}/Makefile" @@ -105,7 +115,7 @@ do_install_ptest () { for f in $(find "${B}/tests/$d" -maxdepth 1 -executable -type f -printf '%P ') ; do cp ${B}/tests/$d/$f ${D}${PTEST_PATH}/tests/`dirname $d`/$f case $f in - *.so) + *.so|userspace-probe-elf-*) install -d ${D}${PTEST_PATH}/tests/$d/ ln -s ../$f ${D}${PTEST_PATH}/tests/$d/$f # Remove any rpath/runpath to pass QA check. @@ -115,6 +125,11 @@ do_install_ptest () { done done + chrpath --delete ${D}${PTEST_PATH}/tests/utils/testapp/userspace-probe-elf-binary/userspace-probe-elf-binary + chrpath --delete ${D}${PTEST_PATH}/tests/utils/testapp/userspace-probe-elf-cxx-binary/userspace-probe-elf-cxx-binary + chrpath --delete ${D}${PTEST_PATH}/tests/regression/ust/ust-dl/libbar.so + chrpath --delete ${D}${PTEST_PATH}/tests/regression/ust/ust-dl/libfoo.so + # # Use the versioned libs of liblttng-ust-dl. # @@ -151,6 +166,10 @@ do_install_ptest () { -e 's#\(^test.*LDADD.=\)#disable\1#g' \ -i ${D}${PTEST_PATH}/tests/unit/Makefile + # Fix hardcoded build path + sed -e 's#TESTAPP_PATH=.*/tests/regression/#TESTAPP_PATH="${PTEST_PATH}/tests/regression/#' \ + -i ${D}${PTEST_PATH}/tests/regression/ust/python-logging/test_python_logging + # Substitute links to installed binaries. for prog in lttng lttng-relayd lttng-sessiond lttng-consumerd lttng-crash; do exedir="${D}${PTEST_PATH}/src/bin/${prog}" @@ -165,3 +184,14 @@ do_install_ptest () { esac done } + +INHIBIT_PACKAGE_STRIP_FILES = "\ + ${PKGD}${PTEST_PATH}/tests/utils/testapp/userspace-probe-elf-binary/userspace-probe-elf-binary \ + ${PKGD}${PTEST_PATH}/tests/utils/testapp/userspace-probe-elf-binary/.libs/userspace-probe-elf-binary \ + ${PKGD}${PTEST_PATH}/tests/utils/testapp/userspace-probe-elf-cxx-binary/userspace-probe-elf-cxx-binary \ + ${PKGD}${PTEST_PATH}/tests/utils/testapp/userspace-probe-elf-cxx-binary/.libs/userspace-probe-elf-cxx-binary \ + ${PKGD}${PTEST_PATH}/tests/utils/testapp/gen-syscall-events/gen-syscall-events \ + ${PKGD}${PTEST_PATH}/tests/utils/testapp/gen-syscall-events/.libs/gen-syscall-events \ + ${PKGD}${PTEST_PATH}/tests/utils/testapp/gen-syscall-events-callstack/gen-syscall-events-callstack \ + ${PKGD}${PTEST_PATH}/tests/utils/testapp/gen-syscall-events-callstack/.libs/gen-syscall-events-callstack \ + " diff --git a/meta/recipes-kernel/lttng/lttng-ust/0001-Makefile.am-update-rpath-link.patch b/meta/recipes-kernel/lttng/lttng-ust/0001-Makefile.am-update-rpath-link.patch new file mode 100644 index 0000000000..6aca8f85fa --- /dev/null +++ b/meta/recipes-kernel/lttng/lttng-ust/0001-Makefile.am-update-rpath-link.patch @@ -0,0 +1,33 @@ +From 7d053804ab3823d40ae10d90f4efc49dbfb4cb66 Mon Sep 17 00:00:00 2001 +From: Changqing Li <changqing.li@windriver.com> +Date: Wed, 22 Sep 2021 16:33:10 +0800 +Subject: [PATCH] Makefile.am: update rpath link + +since commit 6339062 Move liblttng-ust to 'src/lib/', +liblttng-ust.so/liblttng-ust-common.so/liblttng-ust-tracepoint.so +'s location changed from one dir to multiple dirs. which make below +error: +ld: warning: liblttng-ust-common.so.1, needed by ../../../src/lib/lttng-ust/.libs/liblttng-ust.so, not found (try using -rpath or -rpath-link) +ld: warning: liblttng-ust-tracepoint.so.1, needed by ../../../src/lib/lttng-ust/.libs/liblttng-ust.so, not found (try using -rpath or -rpath-link) + +Upstream-Status: Submitted [https://github.com/lttng/lttng-ust/pull/61] + +Signed-off-by: Changqing Li <changqing.li@windriver.com> + +--- + doc/examples/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/doc/examples/Makefile.am b/doc/examples/Makefile.am +index 57782cc..d46caa6 100644 +--- a/doc/examples/Makefile.am ++++ b/doc/examples/Makefile.am +@@ -167,7 +167,7 @@ all-local: + CFLAGS='$(CFLAGS)' \ + AM_CFLAGS='$(AM_CFLAGS)' \ + LDFLAGS="$(LDFLAGS)" \ +- AM_LDFLAGS='$(AM_LDFLAGS) -L../../../src/lib/lttng-ust/.libs -Wl,-rpath="$(PWD)/../../src/lib/lttng-ust/.libs/" -Wl,-rpath-link="$(PWD)/../../src/lib/lttng-ust/.libs/"' \ ++ AM_LDFLAGS='$(AM_LDFLAGS) -L../../../src/lib/lttng-ust/.libs -Wl,-rpath="$(PWD)/../../src/lib/lttng-ust/.libs/" -Wl,-rpath-link="$(PWD)/../../src/lib/lttng-ust/.libs/:$(PWD)/../../src/lib/lttng-ust-tracepoint/.libs:$(PWD)/../../src/lib/lttng-ust-common/.libs/"' \ + LTTNG_GEN_TP_PATH="$$rel_src_subdir$(top_srcdir)/tools/" \ + AM_V_P="$(AM_V_P)" \ + AM_V_at="$(AM_V_at)" \ diff --git a/meta/recipes-kernel/lttng/lttng-ust/0001-compat-work-around-broken-_SC_NPROCESSORS_CONF-on-MU.patch b/meta/recipes-kernel/lttng/lttng-ust/0001-compat-work-around-broken-_SC_NPROCESSORS_CONF-on-MU.patch deleted file mode 100644 index 5c4bd36726..0000000000 --- a/meta/recipes-kernel/lttng/lttng-ust/0001-compat-work-around-broken-_SC_NPROCESSORS_CONF-on-MU.patch +++ /dev/null @@ -1,109 +0,0 @@ -From 5de7c318804a7b1edce8562d4891b4c74aac0677 Mon Sep 17 00:00:00 2001 -From: Michael Jeanson <mjeanson@efficios.com> -Date: Wed, 20 Mar 2019 11:07:35 -0400 -Subject: [PATCH] compat: work around broken _SC_NPROCESSORS_CONF on MUSL libc - -On MUSL libc the _SC_NPROCESSORS_CONF sysconf will report the number of -CPUs allocated to the task based on the affinity mask instead of the -total number of CPUs configured on the system. - -Upstream-Status: Accepted [1] [5de7c318804a7b1edce8562d4891b4c74aac0677] -[1] https://lists.lttng.org/pipermail/lttng-dev/2019-March/028616.html - -Signed-off-by: Michael Jeanson <mjeanson@efficios.com> -Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> ---- - libringbuffer/smp.c | 66 +++++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 66 insertions(+) - -diff --git a/libringbuffer/smp.c b/libringbuffer/smp.c -index 9e7114be..656a75da 100644 ---- a/libringbuffer/smp.c -+++ b/libringbuffer/smp.c -@@ -2,6 +2,7 @@ - * libringbuffer/smp.c - * - * Copyright (C) 2011-2012 Mathieu Desnoyers <mathieu.desnoyers@efficios.com> -+ * Copyright (C) 2019 Michael Jeanson <mjeanson@efficios.com> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public -@@ -26,6 +27,7 @@ - - int __num_possible_cpus; - -+#if (defined(__GLIBC__) || defined( __UCLIBC__)) - void _get_num_possible_cpus(void) - { - int result; -@@ -43,3 +45,67 @@ void _get_num_possible_cpus(void) - return; - __num_possible_cpus = result; - } -+ -+#else -+ -+/* -+ * The MUSL libc implementation of the _SC_NPROCESSORS_CONF sysconf does not -+ * return the number of configured CPUs in the system but relies on the cpu -+ * affinity mask of the current task. -+ * -+ * So instead we use a strategy similar to GLIBC's, counting the cpu -+ * directories in "/sys/devices/system/cpu" and fallback on the value from -+ * sysconf if it fails. -+ */ -+ -+#include <dirent.h> -+#include <limits.h> -+#include <stdlib.h> -+#include <string.h> -+#include <sys/types.h> -+ -+#define __max(a,b) ((a)>(b)?(a):(b)) -+ -+void _get_num_possible_cpus(void) -+{ -+ int result, count = 0; -+ DIR *cpudir; -+ struct dirent *entry; -+ -+ cpudir = opendir("/sys/devices/system/cpu"); -+ if (cpudir == NULL) -+ goto end; -+ -+ /* -+ * Count the number of directories named "cpu" followed by and -+ * integer. This is the same strategy as glibc uses. -+ */ -+ while ((entry = readdir(cpudir))) { -+ if (entry->d_type == DT_DIR && -+ strncmp(entry->d_name, "cpu", 3) == 0) { -+ -+ char *endptr; -+ unsigned long cpu_num; -+ -+ cpu_num = strtoul(entry->d_name + 3, &endptr, 10); -+ if ((cpu_num < ULONG_MAX) && (endptr != entry->d_name + 3) -+ && (*endptr == '\0')) { -+ count++; -+ } -+ } -+ } -+ -+end: -+ /* -+ * Get the sysconf value as a fallback. Keep the highest number. -+ */ -+ result = __max(sysconf(_SC_NPROCESSORS_CONF), count); -+ -+ /* -+ * If both methods failed, don't store the value. -+ */ -+ if (result < 1) -+ return; -+ __num_possible_cpus = result; -+} -+#endif --- -2.17.1 - diff --git a/meta/recipes-kernel/lttng/lttng-ust/0001-lttng-ust-common-link-with-liburcu-explicitly.patch b/meta/recipes-kernel/lttng/lttng-ust/0001-lttng-ust-common-link-with-liburcu-explicitly.patch new file mode 100644 index 0000000000..e85dbdb439 --- /dev/null +++ b/meta/recipes-kernel/lttng/lttng-ust/0001-lttng-ust-common-link-with-liburcu-explicitly.patch @@ -0,0 +1,26 @@ +From 27402453f25fbdb5a9fb1a1b88d1c4d9852187d2 Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <alex@linutronix.de> +Date: Sun, 5 Sep 2021 10:44:19 +0200 +Subject: [PATCH] lttng-ust-common: link with liburcu explicitly + +Otherwise linking errors are seen on x86-32. + +Upstream-Status: Submitted [by email to lttng-dev, Francis, Jonathan] +Signed-off-by: Alexander Kanavin <alex@linutronix.de> + +--- + src/lib/lttng-ust-common/Makefile.am | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/lib/lttng-ust-common/Makefile.am b/src/lib/lttng-ust-common/Makefile.am +index 1ccc290..6531fa0 100644 +--- a/src/lib/lttng-ust-common/Makefile.am ++++ b/src/lib/lttng-ust-common/Makefile.am +@@ -16,6 +16,7 @@ liblttng_ust_common_la_SOURCES = \ + + liblttng_ust_common_la_LIBADD = \ + $(top_builddir)/src/common/libcommon.la \ ++ $(URCU_LIBS) \ + $(DL_LIBS) + + liblttng_ust_common_la_LDFLAGS = -no-undefined -version-info $(LTTNG_UST_LIBRARY_VERSION) diff --git a/meta/recipes-kernel/lttng/lttng-ust/0001-python-lttngust-Makefile.am-Add-install-lib-to-setup.patch b/meta/recipes-kernel/lttng/lttng-ust/0001-python-lttngust-Makefile.am-Add-install-lib-to-setup.patch new file mode 100644 index 0000000000..7c49583e0d --- /dev/null +++ b/meta/recipes-kernel/lttng/lttng-ust/0001-python-lttngust-Makefile.am-Add-install-lib-to-setup.patch @@ -0,0 +1,29 @@ +From f65efd963e52de51d35e2e03fb773f33dd64f565 Mon Sep 17 00:00:00 2001 +From: Richard Purdie <richard.purdie@linuxfoundation.org> +Date: Tue, 20 Feb 2024 12:19:06 +0000 +Subject: [PATCH] python-lttngust/Makefile.am: Add --install-lib to setup.py + +Otherwise it may install to /usr/lib, but should be /usr/lib64 when cross +building. + +Upstream-Status: Submitted [https://github.com/lttng/lttng-ust/pull/59] + +Signed-off-by: Robert Yang <liezhi.yang@windriver.com> + +--- + src/python-lttngust/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/python-lttngust/Makefile.am b/src/python-lttngust/Makefile.am +index d53e21d..283901e 100644 +--- a/src/python-lttngust/Makefile.am ++++ b/src/python-lttngust/Makefile.am +@@ -45,7 +45,7 @@ install-exec-local: build-python-bindings.stamp + if [ "$(DESTDIR)" != "" ]; then \ + opts="$$opts --root=$(DESTDIR)"; \ + fi; \ +- $(PYTHON) $(builddir)/setup.py install $(PY_INSTALL_OPTS) $$opts; ++ $(PYTHON) $(builddir)/setup.py install $(PY_INSTALL_OPTS) $$opts --install-lib=$(pythondir); + + clean-local: + rm -rf $(builddir)/build diff --git a/meta/recipes-kernel/lttng/lttng-ust/lttng-ust-doc-examples-disable.patch b/meta/recipes-kernel/lttng/lttng-ust/lttng-ust-doc-examples-disable.patch deleted file mode 100644 index bff852799d..0000000000 --- a/meta/recipes-kernel/lttng/lttng-ust/lttng-ust-doc-examples-disable.patch +++ /dev/null @@ -1,17 +0,0 @@ -Upstream-Status: Inappropriate [embedded specific] - -Don't build the doc examples - we don't need them and in fact they -never successfully built in previous iterations of the lttng-ust -recipe anyway. - -Signed-off-by: Tom Zanussi <tom.zanussi@intel.com> - -Index: lttng-ust-2.9.1/doc/Makefile.am -=================================================================== ---- lttng-ust-2.9.1.orig/doc/Makefile.am -+++ lttng-ust-2.9.1/doc/Makefile.am -@@ -1,3 +1,3 @@ --SUBDIRS = . man examples -+SUBDIRS = . man - - dist_doc_DATA = java-agent.txt diff --git a/meta/recipes-kernel/lttng/lttng-ust_2.10.3.bb b/meta/recipes-kernel/lttng/lttng-ust_2.13.8.bb index d546104129..dddd3a5004 100644 --- a/meta/recipes-kernel/lttng/lttng-ust_2.10.3.bb +++ b/meta/recipes-kernel/lttng/lttng-ust_2.13.8.bb @@ -3,46 +3,50 @@ DESCRIPTION = "The LTTng UST 2.x package contains the userspace tracer library t HOMEPAGE = "http://lttng.org/ust" BUGTRACKER = "https://bugs.lttng.org/projects/lttng-ust" -LICENSE = "LGPLv2.1+ & MIT & GPLv2" -LIC_FILES_CHKSUM = "file://COPYING;md5=c963eb366b781252b0bf0fdf1624d9e9 \ - file://snprintf/snprintf.c;endline=32;md5=d3d544959d8a3782b2e07451be0a903c \ - file://snprintf/various.h;endline=31;md5=89f2509b6b4682c4fc95255eec4abe44" +LICENSE = "LGPL-2.1-or-later & MIT & GPL-2.0-only" +LIC_FILES_CHKSUM = "file://LICENSE;md5=a46577a38ad0c36ff6ff43ccf40c480f" PYTHON_OPTION = "am_cv_python_pyexecdir='${PYTHON_SITEPACKAGES_DIR}' \ am_cv_python_pythondir='${PYTHON_SITEPACKAGES_DIR}' \ PYTHON_INCLUDE='-I${STAGING_INCDIR}/python${PYTHON_BASEVERSION}${PYTHON_ABI}' \ " -inherit autotools lib_package manpages python3native +inherit autotools lib_package manpages python3native pkgconfig + +include lttng-platforms.inc + +EXTRA_OECONF = "--disable-numa" +CPPFLAGS:append:arm = "${@oe.utils.vartrue('DEBUG_BUILD', '-DUATOMIC_NO_LINK_ERROR', '', d)}" DEPENDS = "liburcu util-linux" -RDEPENDS_${PN}-bin = "python3-core" +RDEPENDS:${PN}-bin = "python3-core" # For backwards compatibility after rename -RPROVIDES_${PN} = "lttng2-ust" -RREPLACES_${PN} = "lttng2-ust" -RCONFLICTS_${PN} = "lttng2-ust" +RPROVIDES:${PN} = "lttng2-ust" +RREPLACES:${PN} = "lttng2-ust" +RCONFLICTS:${PN} = "lttng2-ust" PE = "2" SRC_URI = "https://lttng.org/files/lttng-ust/lttng-ust-${PV}.tar.bz2 \ - file://lttng-ust-doc-examples-disable.patch \ - file://0001-compat-work-around-broken-_SC_NPROCESSORS_CONF-on-MU.patch \ - " + file://0001-python-lttngust-Makefile.am-Add-install-lib-to-setup.patch \ + file://0001-lttng-ust-common-link-with-liburcu-explicitly.patch \ + file://0001-Makefile.am-update-rpath-link.patch \ + " -SRC_URI[md5sum] = "ffcfa8c1ba9a52f002d240e936e9afa2" -SRC_URI[sha256sum] = "9e8420f90d5f963f7aa32bc6d44adc1e491136f687c69ffb7a3075d33b40852b" +SRC_URI[sha256sum] = "d4ef98dab9a37ad4f524ccafdfd50af4f266039b528dd5afabce78e49024d937" CVE_PRODUCT = "ust" +PACKAGECONFIG[examples] = "--enable-examples, --disable-examples," PACKAGECONFIG[manpages] = "--enable-man-pages, --disable-man-pages, asciidoc-native xmlto-native libxslt-native" PACKAGECONFIG[python3-agent] = "--enable-python-agent ${PYTHON_OPTION}, --disable-python-agent, python3, python3" -FILES_${PN} += " ${PYTHON_SITEPACKAGES_DIR}/*" -FILES_${PN}-staticdev += " ${PYTHON_SITEPACKAGES_DIR}/*.a" -FILES_${PN}-dev += " ${PYTHON_SITEPACKAGES_DIR}/*.la" +FILES:${PN} += " ${PYTHON_SITEPACKAGES_DIR}/*" +FILES:${PN}-staticdev += " ${PYTHON_SITEPACKAGES_DIR}/*.a" +FILES:${PN}-dev += " ${PYTHON_SITEPACKAGES_DIR}/*.la" -do_install_append() { +do_install:append() { # Patch python tools to use Python 3; they should be source compatible, but # still refer to Python 2 in the shebang sed -i -e '1s,#!.*python.*,#!${bindir}/python3,' ${D}${bindir}/lttng-gen-tp 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 index 97c58c5233..a91680d497 100644 --- 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 @@ -1,8 +1,9 @@ SUMMARY = "Build tools needed by external modules" -LICENSE = "GPLv2" -LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6" +HOMEPAGE = "https://www.yoctoproject.org/" +LICENSE = "GPL-2.0-only" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6" -inherit kernel-arch +inherit kernel-arch linux-kernel-base inherit pkgconfig PACKAGE_ARCH = "${MACHINE_ARCH}" @@ -12,16 +13,26 @@ S = "${WORKDIR}" do_configure[depends] += "virtual/kernel:do_shared_workdir openssl-native:do_populate_sysroot" do_compile[depends] += "virtual/kernel:do_compile_kernelmodules" -DEPENDS += "bc-native" +DEV_PKG_DEPENDENCY = "" + +DEPENDS += "bc-native bison-native" +DEPENDS += "gmp-native" EXTRA_OEMAKE = " HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" HOSTCPP="${BUILD_CPP}"" +EXTRA_OEMAKE += " HOSTCXX="${BUILD_CXX} ${BUILD_CXXFLAGS} ${BUILD_LDFLAGS}" CROSS_COMPILE=${TARGET_PREFIX}" + +KERNEL_LOCALVERSION = "${@get_kernellocalversion_file("${STAGING_KERNEL_BUILDDIR}")}" +export LOCALVERSION="${KERNEL_LOCALVERSION}" # 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 - oe_runmake CC="${KERNEL_CC}" LD="${KERNEL_LD}" AR="${KERNEL_AR}" \ - -C ${STAGING_KERNEL_DIR} O=${STAGING_KERNEL_BUILDDIR} scripts prepare - + for t in prepare scripts_basic scripts; do + oe_runmake CC="${KERNEL_CC}" LD="${KERNEL_LD}" \ + AR="${KERNEL_AR}" OBJCOPY="${KERNEL_OBJCOPY}" \ + STRIP="${KERNEL_STRIP}" \ + -C ${STAGING_KERNEL_DIR} O=${STAGING_KERNEL_BUILDDIR} $t + done } diff --git a/meta/recipes-kernel/modutils-initscripts/files/PD.patch b/meta/recipes-kernel/modutils-initscripts/files/PD.patch deleted file mode 100644 index 21ac49cbd8..0000000000 --- a/meta/recipes-kernel/modutils-initscripts/files/PD.patch +++ /dev/null @@ -1,8 +0,0 @@ -Upstream-Status: Inappropriate [licensing] - -Index: modutils-initscripts-1.0/LICENSE -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ modutils-initscripts-1.0/LICENSE 2010-12-06 14:26:03.570339002 -0800 -@@ -0,0 +1 @@ -+Public Domain diff --git a/meta/recipes-kernel/modutils-initscripts/files/modutils.sh b/meta/recipes-kernel/modutils-initscripts/files/modutils.sh index a78adf5729..e9aaa66cb7 100755 --- a/meta/recipes-kernel/modutils-initscripts/files/modutils.sh +++ b/meta/recipes-kernel/modutils-initscripts/files/modutils.sh @@ -1,4 +1,8 @@ #!/bin/sh +# +# SPDX-License-Identifier: MIT +# + ### BEGIN INIT INFO # Provides: module-init-tools # Required-Start: @@ -13,14 +17,17 @@ LOAD_MODULE=modprobe [ -f /proc/modules ] || exit 0 -[ -f /etc/modules ] || [ -d /etc/modules-load.d ] || exit 0 -[ -e /sbin/modprobe ] || LOAD_MODULE=insmod +[ -d /lib/modules/`uname -r` ] || exit 0 -if [ ! -f /lib/modules/`uname -r`/modules.dep ]; then +# Test if modules.dep exists and has a size greater than zero +if [ ! -s /lib/modules/`uname -r`/modules.dep ]; then [ "$VERBOSE" != no ] && echo "Calculating module dependencies ..." - depmod -Ae + depmod -a fi +[ -f /etc/modules ] || [ -d /etc/modules-load.d ] || exit 0 +[ -e /sbin/modprobe ] || LOAD_MODULE=insmod + loaded_modules=" " process_file() { diff --git a/meta/recipes-kernel/modutils-initscripts/modutils-initscripts.bb b/meta/recipes-kernel/modutils-initscripts/modutils-initscripts.bb index 0f3df5577b..b630a402ff 100644 --- a/meta/recipes-kernel/modutils-initscripts/modutils-initscripts.bb +++ b/meta/recipes-kernel/modutils-initscripts/modutils-initscripts.bb @@ -1,16 +1,14 @@ SUMMARY = "Initscript for auto-loading kernel modules on boot" SECTION = "base" -LICENSE = "PD" -LIC_FILES_CHKSUM = "file://LICENSE;md5=7bf87fc37976e93ec66ad84fac58c098" -SRC_URI = "file://modutils.sh \ - file://PD.patch" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://modutils.sh;beginline=3;endline=3;md5=b2dccaa94b3629a08bfb4f983cad6f89" +SRC_URI = "file://modutils.sh" -PR = "r7" S = "${WORKDIR}" INITSCRIPT_NAME = "modutils.sh" -INITSCRIPT_PARAMS = "start 05 S ." +INITSCRIPT_PARAMS = "start 06 S ." inherit update-rc.d @@ -22,9 +20,9 @@ do_install () { install -m 0755 ${WORKDIR}/modutils.sh ${D}${sysconfdir}/init.d/ } -PACKAGE_WRITE_DEPS_append = " ${@bb.utils.contains('DISTRO_FEATURES','systemd','systemd-systemctl-native','',d)}" -pkg_postinst_${PN} () { - if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then +PACKAGE_WRITE_DEPS:append = " ${@bb.utils.contains('DISTRO_FEATURES','systemd','systemd-systemctl-native','',d)}" +pkg_postinst:${PN} () { + if type systemctl >/dev/null 2>/dev/null; then if [ -n "$D" ]; then OPTS="--root=$D" fi diff --git a/meta/recipes-kernel/perf/perf-perl.inc b/meta/recipes-kernel/perf/perf-perl.inc index ae77319b20..491f54c328 100644 --- a/meta/recipes-kernel/perf/perf-perl.inc +++ b/meta/recipes-kernel/perf/perf-perl.inc @@ -2,6 +2,10 @@ inherit perlnative cpan-base # Env var which tells perl if it should use host (no) or target (yes) settings export PERLCONFIGTARGET = "${@is_target(d)}" -export PERL_INC = "${STAGING_LIBDIR}${PERL_OWN_DIR}/perl/${@get_perl_version(d)}/CORE" -export PERL_LIB = "${STAGING_LIBDIR}${PERL_OWN_DIR}/perl/${@get_perl_version(d)}" -export PERL_ARCHLIB = "${STAGING_LIBDIR}${PERL_OWN_DIR}/perl/${@get_perl_version(d)}" +export PERL_INC = "${STAGING_LIBDIR}${PERL_OWN_DIR}/perl5/${@get_perl_version(d)}/${@get_perl_arch(d)}/CORE" +export PERL_LIB = "${STAGING_LIBDIR}${PERL_OWN_DIR}/perl5/${@get_perl_version(d)}" +export PERL_ARCHLIB = "${STAGING_LIBDIR}${PERL_OWN_DIR}/perl5/${@get_perl_version(d)}/${@get_perl_arch(d)}" + +# The perl symbols CPPSTDIN and CPPRUN embed the sysroot into the +# binaries, work needed to remove this +INSANE_SKIP:${PN}-dbg += "buildpaths" diff --git a/meta/recipes-kernel/perf/perf.bb b/meta/recipes-kernel/perf/perf.bb index 4e603f1a32..11fa917649 100644 --- a/meta/recipes-kernel/perf/perf.bb +++ b/meta/recipes-kernel/perf/perf.bb @@ -7,28 +7,38 @@ and software features (software counters, tracepoints) \ as well." HOMEPAGE = "https://perf.wiki.kernel.org/index.php/Main_Page" -LICENSE = "GPLv2" +LICENSE = "GPL-2.0-only" -PR = "r9" -PACKAGECONFIG ??= "scripting tui libunwind" +PACKAGECONFIG ??= "python tui libunwind libtraceevent" PACKAGECONFIG[dwarf] = ",NO_DWARF=1" -PACKAGECONFIG[scripting] = ",NO_LIBPERL=1 NO_LIBPYTHON=1,perl python" +PACKAGECONFIG[perl] = ",NO_LIBPERL=1,perl" +PACKAGECONFIG[python] = ",NO_LIBPYTHON=1,python3 python3-setuptools-native" # gui support was added with kernel 3.6.35 # since 3.10 libnewt was replaced by slang # to cover a wide range of kernel we add both dependencies PACKAGECONFIG[tui] = ",NO_NEWT=1,libnewt slang" PACKAGECONFIG[libunwind] = ",NO_LIBUNWIND=1 NO_LIBDW_DWARF_UNWIND=1,libunwind" PACKAGECONFIG[libnuma] = ",NO_LIBNUMA=1" +PACKAGECONFIG[bfd] = ",NO_LIBBFD=1" PACKAGECONFIG[systemtap] = ",NO_SDT=1,systemtap" PACKAGECONFIG[jvmti] = ",NO_JVMTI=1" # libaudit support would need scripting to be enabled PACKAGECONFIG[audit] = ",NO_LIBAUDIT=1,audit" PACKAGECONFIG[manpages] = ",,xmlto-native asciidoc-native" +PACKAGECONFIG[cap] = ",,libcap" +PACKAGECONFIG[libtraceevent] = ",NO_LIBTRACEEVENT=1,libtraceevent" +# jevents requires host python for generating a .c file, but is +# unrelated to the python item. +PACKAGECONFIG[jevents] = ",NO_JEVENTS=1,python3-native" +# Arm CoreSight +PACKAGECONFIG[coresight] = "CORESIGHT=1,,opencsd" +PACKAGECONFIG[pfm4] = ",NO_LIBPFM4=1,libpfm4" +PACKAGECONFIG[babeltrace] = ",NO_LIBBABELTRACE=1,babeltrace" # libunwind is not yet ported for some architectures -PACKAGECONFIG_remove_arc = "libunwind" -PACKAGECONFIG_remove_riscv64 = "libunwind" +PACKAGECONFIG:remove:arc = "libunwind" +PACKAGECONFIG:remove:riscv32 = "libunwind" DEPENDS = " \ virtual/${MLPREFIX}libc \ @@ -44,17 +54,17 @@ PROVIDES = "virtual/perf" inherit linux-kernel-base kernel-arch manpages # needed for building the tools/perf Python bindings -inherit ${@bb.utils.contains('PACKAGECONFIG', 'scripting', 'pythonnative', '', d)} -inherit python-dir +inherit_defer ${@bb.utils.contains('PACKAGECONFIG', 'python', 'python3targetconfig', '', d)} +inherit python3-dir export PYTHON_SITEPACKAGES_DIR #kernel 3.1+ supports WERROR to disable warnings as errors export WERROR = "0" -do_populate_lic[depends] += "virtual/kernel:do_patch" +do_populate_lic[depends] += "virtual/kernel:do_shared_workdir" # needed for building the tools/perf Perl binding -include ${@bb.utils.contains('PACKAGECONFIG', 'scripting', 'perf-perl.inc', '', d)} +include ${@bb.utils.contains('PACKAGECONFIG', 'perl', 'perf-perl.inc', '', d)} inherit kernelsrc @@ -66,19 +76,34 @@ SPDX_S = "${S}/tools/perf" # supported kernel. LDFLAGS="-ldl -lutil" +# Perf's build system adds its own optimization flags for most TUs, +# overriding the flags included here. But for some, perf does not add +# any -O option, so ensure the distro's chosen optimization gets used +# for those. Since ${SELECTED_OPTIMIZATION} always includes +# ${DEBUG_FLAGS} which in turn includes ${DEBUG_PREFIX_MAP}, this also +# ensures perf is built with appropriate -f*-prefix-map options, +# avoiding the 'buildpaths' QA warning. +TARGET_CC_ARCH += "${SELECTED_OPTIMIZATION}" + EXTRA_OEMAKE = '\ + V=1 \ + VF=1 \ -C ${S}/tools/perf \ O=${B} \ CROSS_COMPILE=${TARGET_PREFIX} \ ARCH=${ARCH} \ CC="${CC}" \ + CCLD="${CC}" \ + LDSHARED="${CC} -shared" \ AR="${AR}" \ LD="${LD}" \ - EXTRA_CFLAGS="-ldw" \ + EXTRA_CFLAGS="-ldw -I${S}" \ + YFLAGS='-y --file-prefix-map=${WORKDIR}=${TARGET_DBGSRC_DIR}' \ EXTRA_LDFLAGS="${PERF_EXTRA_LDFLAGS}" \ perfexecdir=${libexecdir} \ NO_GTK2=1 \ ${PACKAGECONFIG_CONFARGS} \ + PKG_CONFIG=pkg-config \ TMPDIR="${B}" \ LIBUNWIND_DIR=${STAGING_EXECPREFIXDIR} \ ' @@ -94,6 +119,7 @@ EXTRA_OEMAKE += "\ 'sharedir=${@os.path.relpath(datadir, prefix)}' \ 'mandir=${@os.path.relpath(mandir, prefix)}' \ 'infodir=${@os.path.relpath(infodir, prefix)}' \ + ${@bb.utils.contains('PACKAGECONFIG', 'python', 'PYTHON=python3 PYTHON_CONFIG=python3-config', '', d)} \ " # During do_configure, we might run a 'make clean'. That often breaks @@ -101,10 +127,13 @@ EXTRA_OEMAKE += "\ # that it has to be done this way rather than by passing -j1, since # perf's build system by default ignores any -j argument, but does # honour a JOBS variable. -EXTRA_OEMAKE_append_task-configure = " JOBS=1" +EXTRA_OEMAKE:append:task-configure = " JOBS=1" +# the architectures that need this file can be found in +# tools/include/uapi/asm/bpf_perf_event.h +# We are only listing supported arches at the moment +PERF_BPF_EVENT_SRC ?= '${@bb.utils.contains_any("ARCH", [ "riscv", "arm64" ], "arch/${ARCH}/include/uapi/asm/bpf_perf_event.h", "", d)}' PERF_SRC ?= "Makefile \ - include \ tools/arch \ tools/build \ tools/include \ @@ -112,17 +141,27 @@ PERF_SRC ?= "Makefile \ tools/Makefile \ tools/perf \ tools/scripts \ + scripts/ \ + arch/arm64/tools \ + ${PERF_BPF_EVENT_SRC} \ + arch/${ARCH}/Makefile \ " PERF_EXTRA_LDFLAGS = "" -# MIPS N32 -PERF_EXTRA_LDFLAGS_mipsarchn32eb = "-m elf32btsmipn32" -PERF_EXTRA_LDFLAGS_mipsarchn32el = "-m elf32ltsmipn32" +# MIPS N32/N64 +PERF_EXTRA_LDFLAGS:mipsarchn32eb = "-m elf32btsmipn32" +PERF_EXTRA_LDFLAGS:mipsarchn32el = "-m elf32ltsmipn32" +PERF_EXTRA_LDFLAGS:mipsarchn64eb = "-m elf64btsmip" +PERF_EXTRA_LDFLAGS:mipsarchn64el = "-m elf64ltsmip" do_compile() { # Linux kernel build system is expected to do the right thing unset CFLAGS + test -e ${S}/tools/lib/traceevent/plugins/Makefile && \ + sed -i -e 's|\$(libdir)/traceevent/plugins|\$(libdir)/traceevent_${KERNEL_VERSION}/plugins|g' ${S}/tools/lib/traceevent/plugins/Makefile + test -e ${S}/tools/perf/Makefile.config && \ + sed -i -e 's|\$(libdir)/traceevent/plugins|\$(libdir)/traceevent_${KERNEL_VERSION}/plugins|g' ${S}/tools/perf/Makefile.config oe_runmake all } @@ -131,8 +170,11 @@ do_install() { unset CFLAGS oe_runmake install # we are checking for this make target to be compatible with older perf versions - if ${@bb.utils.contains('PACKAGECONFIG', 'scripting', 'true', 'false', d)} && grep -q install-python_ext ${S}/tools/perf/Makefile*; then - oe_runmake DESTDIR=${D} install-python_ext + if ${@bb.utils.contains('PACKAGECONFIG', 'python', 'true', 'false', d)} && grep -q install-python_ext ${S}/tools/perf/Makefile*; then + oe_runmake DESTDIR=${D} install-python_ext + if [ -e ${D}${libdir}/python*/site-packages/perf-*/SOURCES.txt ]; then + sed -i -e 's#${WORKDIR}##g' ${D}${libdir}/python*/site-packages/perf-*/SOURCES.txt + fi fi } @@ -142,18 +184,22 @@ python copy_perf_source_from_kernel() { src_dir = d.getVar("STAGING_KERNEL_DIR") dest_dir = d.getVar("S") bb.utils.mkdirhier(dest_dir) + bb.utils.prunedir(dest_dir) for s in sources: src = oe.path.join(src_dir, s) dest = oe.path.join(dest_dir, s) if not os.path.exists(src): - bb.fatal("Path does not exist: %s. Maybe PERF_SRC does not match the kernel version." % src) + bb.warn("Path does not exist: %s. Maybe PERF_SRC lists more files than what your kernel version provides and needs." % src) + continue if os.path.isdir(src): oe.path.copyhardlinktree(src, dest) else: + src_path = os.path.dirname(s) + os.makedirs(os.path.join(dest_dir,src_path),exist_ok=True) bb.utils.copyfile(src, dest) } -do_configure_prepend () { +do_configure:prepend () { # If building a multlib based perf, the incorrect library path will be # detected by perf, since it triggers via: ifeq ($(ARCH),x86_64). In a 32 bit # build, with a 64 bit multilib, the arch won't match and the detection of a @@ -189,22 +235,101 @@ do_configure_prepend () { if [ -e "${S}/tools/perf/Makefile.perf" ]; then sed -i -e 's,\ .config-detected, $(OUTPUT)/config-detected,g' \ ${S}/tools/perf/Makefile.perf - sed -i -e "s,prefix='\$(DESTDIR_SQ)/usr'$,prefix='\$(DESTDIR_SQ)/usr' --install-lib='\$(DESTDIR)\$(PYTHON_SITEPACKAGES_DIR)',g" \ + # Variant with linux-yocto-specific patch + sed -i -e "s,prefix='\$(DESTDIR_SQ)/usr'$,prefix='\$(DESTDIR_SQ)/usr' --install-lib='\$(PYTHON_SITEPACKAGES_DIR)' --root='\$(DESTDIR)',g" \ + ${S}/tools/perf/Makefile.perf + # Variant for mainline Linux + sed -i -e "s,root='/\$(DESTDIR_SQ)',prefix='\$(DESTDIR_SQ)/usr' --install-lib='\$(PYTHON_SITEPACKAGES_DIR)' --root='/\$(DESTDIR_SQ)',g" \ + ${S}/tools/perf/Makefile.perf + # backport https://github.com/torvalds/linux/commit/e4ffd066ff440a57097e9140fa9e16ceef905de8 + sed -i -e 's,\($(Q)$(SHELL) .$(arch_errno_tbl).\) $(CC) $(arch_errno_hdr_dir),\1 $(firstword $(CC)) $(arch_errno_hdr_dir),g' \ ${S}/tools/perf/Makefile.perf fi sed -i -e "s,--root='/\$(DESTDIR_SQ)',--prefix='\$(DESTDIR_SQ)/usr' --install-lib='\$(DESTDIR)\$(PYTHON_SITEPACKAGES_DIR)',g" \ - ${S}/tools/perf/Makefile* + ${S}/tools/perf/Makefile if [ -e "${S}/tools/build/Makefile.build" ]; then sed -i -e 's,\ .config-detected, $(OUTPUT)/config-detected,g' \ ${S}/tools/build/Makefile.build fi + # start reproducibility substitutions + if [ -e "${S}/tools/perf/Makefile.config" ]; then + # The following line in the Makefle: + # override PYTHON := $(call get-executable-or-default,PYTHON,$(PYTHON_AUTO)) + # "PYTHON" / "PYTHON_AUTO" have the full path as part of the variable. We've + # ensure that the environment is setup and we do not need the full path to be + # captured, since the symbol gets built into the executable, making it not + # reproducible. + sed -i -e 's,$(call get-executable-or-default\,PYTHON\,$(PYTHON_AUTO)),$(notdir $(call get-executable-or-default\,PYTHON\,$(PYTHON_AUTO))),g' \ + ${S}/tools/perf/Makefile.config + # The same line is in older releases, but looking explicitly for Python 2 + sed -i -e 's,$(call get-executable-or-default\,PYTHON\,$(PYTHON2)),$(notdir $(call get-executable-or-default\,PYTHON\,$(PYTHON2))),g' \ + ${S}/tools/perf/Makefile.config + + # likewise with this substitution. Kernels with commit 18f2967418d031a39 + # [perf tools: Use Python devtools for version autodetection rather than runtime] + # need this substitution for reproducibility. + sed -i -e 's,$(call get-executable-or-default\,PYTHON\,$(subst -config\,\,$(PYTHON_AUTO))),$(notdir $(call get-executable-or-default\,PYTHON\,$(subst -config\,\,$(PYTHON_AUTO)))),g' \ + ${S}/tools/perf/Makefile.config + + # The following line: + # srcdir_SQ = $(patsubst %tools/perf,tools/perf,$(subst ','\'',$(srcdir))), + # Captures the full src path of perf, which of course makes it not + # reproducible. We really only need the relative location 'tools/perf', so we + # change the Makefile line to remove everything before 'tools/perf' + sed -i -e "s%srcdir_SQ = \$(subst ','\\\'',\$(srcdir))%srcdir_SQ = \$(patsubst \%tools/perf,tools/perf,\$(subst ','\\\'',\$(srcdir)))%g" \ + ${S}/tools/perf/Makefile.config + # Avoid hardcoded path to python-native + sed -i -e 's#\(PYTHON_WORD := \)$(call shell-wordify,$(PYTHON))#\1 python3#g' \ + ${S}/tools/perf/Makefile.config + fi + if [ -e "${S}/tools/perf/tests/Build" ]; then + # OUTPUT is the full path, we have python on the path so we remove it from the + # definition. This is captured in the perf binary, so breaks reproducibility + sed -i -e 's,PYTHONPATH="BUILD_STR($(OUTPUT)python)",PYTHONPATH="BUILD_STR(python)",g' \ + ${S}/tools/perf/tests/Build + fi + if [ -e "${S}/tools/perf/util/Build" ]; then + # To avoid bison generating #ifdefs that have captured paths, we make sure + # all the calls have YFLAGS, which contains prefix mapping information. + sed -i -e 's,$(BISON),$(BISON) $(YFLAGS),g' ${S}/tools/perf/util/Build + fi + if [ -e "${S}/scripts/Makefile.host" ]; then + # To avoid yacc (bison) generating #ifdefs that have captured paths, we make sure + # all the calls have YFLAGS, which contains prefix mapping information. + sed -i -e 's,$(YACC),$(YACC) $(YFLAGS),g' ${S}/scripts/Makefile.host + fi + if [ -e "${S}/tools/perf/pmu-events/Build" ]; then + target='$(OUTPUT)pmu-events/pmu-events.c $(V)' + replacement1='$(OUTPUT)pmu-events/pmu-events.c $(V)\n' + replacement2='\t$(srctree)/sort-pmuevents.py $(OUTPUT)pmu-events/pmu-events.c $(OUTPUT)pmu-events/pmu-events.c.new\n' + replacement3='\tcp $(OUTPUT)pmu-events/pmu-events.c.new $(OUTPUT)pmu-events/pmu-events.c' + sed -i -e "s,$target,$replacement1$replacement2$replacement3,g" \ + "${S}/tools/perf/pmu-events/Build" + fi + if [ -e "${S}/tools/perf/pmu-events/jevents.py" ]; then + sed -i -e "s#os.scandir(path)#sorted(os.scandir(path), key=lambda e: e.name)#g" \ + "${S}/tools/perf/pmu-events/jevents.py" + fi + if [ -e "${S}/tools/perf/arch/arm64/Makefile" ]; then + sed -i 's,sysdef := $(srctree)/,sysdef := ,' ${S}/tools/perf/arch/arm64/Makefile + sed -i 's,$(incpath) $(sysdef),$(incpath) $(srctree)/$(sysdef) $(sysdef),' ${S}/tools/perf/arch/arm64/Makefile + fi + if [ -e "${S}/tools/perf/arch/arm64/entry/syscalls/mksyscalltbl" ]; then + if ! grep -q input_rel ${S}/tools/perf/arch/arm64/entry/syscalls/mksyscalltbl; then + sed -i 's,input=$4,input=$4\ninput_rel=$5,' ${S}/tools/perf/arch/arm64/entry/syscalls/mksyscalltbl + fi + sed -i 's,#include \\"\$input\\",#include \\"\$input_rel\\",' ${S}/tools/perf/arch/arm64/entry/syscalls/mksyscalltbl + fi + # end reproducibility substitutions + # We need to ensure the --sysroot option in CC is preserved if [ -e "${S}/tools/perf/Makefile.perf" ]; then sed -i 's,CC = $(CROSS_COMPILE)gcc,#CC,' ${S}/tools/perf/Makefile.perf sed -i 's,AR = $(CROSS_COMPILE)ar,#AR,' ${S}/tools/perf/Makefile.perf sed -i 's,LD = $(CROSS_COMPILE)ld,#LD,' ${S}/tools/perf/Makefile.perf + sed -i 's,PKG_CONFIG = $(CROSS_COMPILE)pkg-config,#PKG_CONFIG,' ${S}/tools/perf/Makefile.perf fi if [ -e "${S}/tools/lib/api/Makefile" ]; then sed -i 's,CC = $(CROSS_COMPILE)gcc,#CC,' ${S}/tools/lib/api/Makefile @@ -221,6 +346,9 @@ do_configure_prepend () { if [ -e "${S}/tools/build/Makefile.feature" ]; then sed -i 's,CFLAGS=,CC="\$(CC)" CFLAGS=,' ${S}/tools/build/Makefile.feature fi + # The libperl feature check produces fatal warnings due to -Werror being + # used, silence enough errors that the check passes. + sed -i 's/\(FLAGS_PERL_EMBED=.*\)/\1 -Wno-error=unused-function -Wno-error=attributes/' ${S}/tools/build/feature/Makefile # 3.17-rc1+ has a include issue for arm/powerpc. Temporarily sed in the appropriate include if [ -e "${S}/tools/perf/arch/$ARCH/util/skip-callchain-idx.c" ]; then @@ -232,16 +360,25 @@ do_configure_prepend () { fi # use /usr/bin/env instead of version specific python - for s in `find ${S}/tools/perf/scripts/python/ -name '*.py'`; do - sed -i 's,/usr/bin/python2,/usr/bin/env python,' "${s}" + for s in `find ${S}/tools/perf/ -name '*.py'` `find ${S}/scripts/ -name 'bpf_helpers_doc.py'`; do + sed -i -e "s,#!.*python.*,#!${USRBINPATH}/env python3," ${s} done # unistd.h can be out of sync between libc-headers and the captured version in the perf source # so we copy it from the sysroot unistd.h to the perf unistd.h install -D -m0644 ${STAGING_INCDIR}/asm-generic/unistd.h ${S}/tools/include/uapi/asm-generic/unistd.h + install -D -m0644 ${STAGING_INCDIR}/asm-generic/unistd.h ${S}/include/uapi/asm-generic/unistd.h + + # the fetcher is inhibited by the 'inherit kernelsrc', so we do a quick check and + # copy for a helper script we need + for p in $(echo ${FILESPATH} | tr ':' '\n'); do + if [ -e $p/sort-pmuevents.py ]; then + cp $p/sort-pmuevents.py ${S} + fi + done } -python do_package_prepend() { +python do_package:prepend() { d.setVar('PKGV', d.getVar("KERNEL_VERSION").split("-")[0]) } @@ -250,25 +387,36 @@ PACKAGE_ARCH = "${MACHINE_ARCH}" PACKAGES =+ "${PN}-archive ${PN}-tests ${PN}-perl ${PN}-python" -RDEPENDS_${PN} += "elfutils bash" -RDEPENDS_${PN}-archive =+ "bash" -RDEPENDS_${PN}-python =+ "bash python python-modules ${@bb.utils.contains('PACKAGECONFIG', 'audit', 'audit-python', '', d)}" -RDEPENDS_${PN}-perl =+ "bash perl perl-modules" -RDEPENDS_${PN}-tests =+ "python" - -RSUGGESTS_SCRIPTING = "${@bb.utils.contains('PACKAGECONFIG', 'scripting', '${PN}-perl ${PN}-python', '',d)}" -RSUGGESTS_${PN} += "${PN}-archive ${PN}-tests ${RSUGGESTS_SCRIPTING}" +RDEPENDS:${PN} += "elfutils bash" +RDEPENDS:${PN}-archive =+ "bash" +RDEPENDS:${PN}-python =+ "bash python3 python3-modules ${@bb.utils.contains('PACKAGECONFIG', 'audit', 'audit-python', '', d)}" +RDEPENDS:${PN}-perl =+ "bash perl perl-modules" +RDEPENDS:${PN}-tests =+ "python3 bash perl" +RSUGGESTS:${PN} += "${PN}-archive ${PN}-tests \ + ${@bb.utils.contains('PACKAGECONFIG', 'perl', '${PN}-perl', '', d)} \ + ${@bb.utils.contains('PACKAGECONFIG', 'python', '${PN}-python', '', d)} \ + " FILES_SOLIBSDEV = "" -FILES_${PN} += "${libexecdir}/perf-core ${exec_prefix}/libexec/perf-core ${libdir}/traceevent ${libdir}/libperf-jvmti.so" -FILES_${PN}-archive = "${libdir}/perf/perf-core/perf-archive" -FILES_${PN}-tests = "${libdir}/perf/perf-core/tests ${libexecdir}/perf-core/tests" -FILES_${PN}-python = " \ +FILES:${PN} += "${libexecdir}/perf-core ${exec_prefix}/libexec/perf-core ${libdir}/traceevent* ${libdir}/libperf-jvmti.so" +FILES:${PN}-archive = "${libdir}/perf/perf-core/perf-archive" +FILES:${PN}-tests = "${libdir}/perf/perf-core/tests ${libexecdir}/perf-core/tests" +FILES:${PN}-python = " \ ${PYTHON_SITEPACKAGES_DIR} \ ${libexecdir}/perf-core/scripts/python \ " -FILES_${PN}-perl = "${libexecdir}/perf-core/scripts/perl" +FILES:${PN}-perl = "${libexecdir}/perf-core/scripts/perl" +DEBUG_OPTIMIZATION:append = " -Wno-error=maybe-uninitialized" -INHIBIT_PACKAGE_DEBUG_SPLIT="1" -DEBUG_OPTIMIZATION_append = " -Wno-error=maybe-uninitialized" +PACKAGESPLITFUNCS =+ "perf_fix_sources" + +perf_fix_sources () { + for f in util/parse-events-flex.h util/parse-events-flex.c util/pmu-flex.c \ + util/pmu-flex.h util/expr-flex.h util/expr-flex.c; do + f=${PKGD}${TARGET_DBGSRC_DIR}/$f + if [ -e $f ]; then + sed -i -e 's#${S}/##g' $f + fi + done +} diff --git a/meta/recipes-kernel/perf/perf/sort-pmuevents.py b/meta/recipes-kernel/perf/perf/sort-pmuevents.py new file mode 100755 index 0000000000..0a87e553ab --- /dev/null +++ b/meta/recipes-kernel/perf/perf/sort-pmuevents.py @@ -0,0 +1,100 @@ +#!/usr/bin/env python3 + +# perf pmu-events sorting tool +# +# Copyright (C) 2021 Bruce Ashfield +# +# SPDX-License-Identifier: MIT +# + +import sys +import os +import re +from collections import OrderedDict + +if len(sys.argv) < 2: + print( "[ERROR]: input and output pmu files missing" ) + sys.exit(1) + +if len(sys.argv) < 3: + print( "[ERROR]: output pmu file missing" ) + sys.exit(1) + +infile = sys.argv[1] +outfile = sys.argv[2] + +if not os.path.exists(infile): + print( "ERROR. input file does not exist: %s" % infile ) + sys.exit(1) + +if os.path.exists(outfile): + print( "WARNING. output file will be overwritten: %s" % infile ) + +with open(infile, 'r') as file: + data = file.read() + +preamble_regex = re.compile( '^(.*?)^(struct|const struct|static struct|static const struct)', re.MULTILINE | re.DOTALL ) + +preamble = re.search( preamble_regex, data ) +struct_block_regex = re.compile(r'^(struct|const struct|static struct|static const struct).*?(\w+) (.*?)\[\] = {(.*?)^};', re.MULTILINE | re.DOTALL ) +field_regex = re.compile(r'{.*?},', re.MULTILINE | re.DOTALL ) +cpuid_regex = re.compile(r'\.cpuid = (.*?),', re.MULTILINE | re.DOTALL ) +name_regex = re.compile(r'\.name = (.*?),', re.MULTILINE | re.DOTALL ) + +# create a dictionary structure to store all the structs, their +# types and then their fields. +entry_dict = {} +for struct in re.findall( struct_block_regex, data ): + # print( "struct: %s %s %s" % (struct[0],struct[1],struct[2]) ) + entry_dict[struct[2]] = {} + entry_dict[struct[2]]['type_prefix'] = struct[0] + entry_dict[struct[2]]['type'] = struct[1] + entry_dict[struct[2]]['fields'] = {} + for entry in re.findall( field_regex, struct[3] ): + #print( " entry: %s" % entry ) + cpuid = re.search( cpuid_regex, entry ) + if cpuid: + #print( " cpuid found: %s" % cpuid.group(1) ) + entry_dict[struct[2]]['fields'][cpuid.group(1)] = entry + + name = re.search( name_regex, entry ) + if name: + #print( " name found: %s" % name.group(1) ) + entry_dict[struct[2]]['fields'][name.group(1)] = entry + + # unmatched entries are most likely array terminators and + # should end up as the last element in the sorted list, which + # is achieved by using '0' as the key + if not cpuid and not name: + entry_dict[struct[2]]['fields']['0'] = entry + +# created ordered dictionaries from the captured values. These are ordered by +# a sorted() iteration of the keys. We don't care about the order we read +# things, just the sorted order. Hency why we couldn't create these during +# reading. +# +# yes, there's a more concise way to do this, but our nested dictionaries of +# fields make it complex enough that it becomes unreadable. +entry_dict_sorted = OrderedDict() +for i in sorted(entry_dict.keys()): + entry_dict_sorted[i] = {} + entry_dict_sorted[i]['type_prefix'] = entry_dict[i]['type_prefix'] + entry_dict_sorted[i]['type'] = entry_dict[i]['type'] + entry_dict_sorted[i]['fields'] = {} + for f in sorted(entry_dict[i]['fields'].keys()): + entry_dict_sorted[i]['fields'][f] = entry_dict[i]['fields'][f] + +# dump the sorted elements to the outfile +outf = open( outfile, 'w' ) + +print( preamble.group(1) ) +outf.write( preamble.group(1) ) +for d in entry_dict_sorted: + outf.write( "%s %s %s[] = {\n" % (entry_dict_sorted[d]['type_prefix'], entry_dict_sorted[d]['type'],d) ) + for f in entry_dict_sorted[d]['fields']: + outf.write( entry_dict_sorted[d]['fields'][f] + '\n' ) + + outf.write( "};\n" ) + +outf.close() + diff --git a/meta/recipes-kernel/powertop/powertop/0001-wakeup_xxx.h-include-limits.h.patch b/meta/recipes-kernel/powertop/powertop/0001-wakeup_xxx.h-include-limits.h.patch new file mode 100644 index 0000000000..7bfca8abfd --- /dev/null +++ b/meta/recipes-kernel/powertop/powertop/0001-wakeup_xxx.h-include-limits.h.patch @@ -0,0 +1,55 @@ +From 4c24fdd8e0a42359df7308155b2d43c28a5e02fd Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine <fontaine.fabrice@gmail.com> +Date: Mon, 20 May 2019 20:25:00 +0200 +Subject: [PATCH] wakeup_xxx.h: include limits.h + +limits.h must be included to define PATH_MAX otherwise build will fail +on: + +In file included from wakeup/wakeup_ethernet.cpp:45:0: +wakeup/wakeup_ethernet.h:35:16: error: 'PATH_MAX' was not declared in this scope + char eth_path[PATH_MAX]; + +In file included from wakeup/wakeup_usb.cpp:45:0: +wakeup/wakeup_usb.h:35:16: error: 'PATH_MAX' was not declared in this scope + char usb_path[PATH_MAX]; + +Fixes: + - http://autobuild.buildroot.org/results/a0b3337cf4a827e6566f8b15b6bb180f0dcef7a3 + +Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com> +Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> + +Upstream-Status: Submitted [https://lists.01.org/pipermail/powertop/2019-May/002052.html] +--- + src/wakeup/wakeup_ethernet.h | 1 + + src/wakeup/wakeup_usb.h | 1 + + 2 files changed, 2 insertions(+) + +diff --git a/src/wakeup/wakeup_ethernet.h b/src/wakeup/wakeup_ethernet.h +index 682bf95..e0fa628 100644 +--- a/src/wakeup/wakeup_ethernet.h ++++ b/src/wakeup/wakeup_ethernet.h +@@ -25,6 +25,7 @@ + #ifndef _INCLUDE_GUARD_ETHERNET_WAKEUP_H + #define _INCLUDE_GUARD_ETHERNET_WAKEUP_H + ++#include <limits.h> + #include <vector> + + #include "wakeup.h" +diff --git a/src/wakeup/wakeup_usb.h b/src/wakeup/wakeup_usb.h +index f7a1f7e..15898e3 100644 +--- a/src/wakeup/wakeup_usb.h ++++ b/src/wakeup/wakeup_usb.h +@@ -25,6 +25,7 @@ + #ifndef _INCLUDE_GUARD_USB_WAKEUP_H + #define _INCLUDE_GUARD_USB_WAKEUP_H + ++#include <limits.h> + #include <vector> + + #include "wakeup.h" +-- +2.20.1 + diff --git a/meta/recipes-kernel/powertop/powertop_2.10.bb b/meta/recipes-kernel/powertop/powertop_2.10.bb deleted file mode 100644 index d943ba9f6e..0000000000 --- a/meta/recipes-kernel/powertop/powertop_2.10.bb +++ /dev/null @@ -1,33 +0,0 @@ -SUMMARY = "Power usage tool" -DESCRIPTION = "Linux tool to diagnose issues with power consumption and power management." -HOMEPAGE = "http://01.org/powertop/" -BUGTRACKER = "http://bugzilla.lesswatts.org/" -DEPENDS = "ncurses libnl pciutils" -LICENSE = "GPLv2" -LIC_FILES_CHKSUM = "file://COPYING;md5=12f884d2ae1ff87c09e5b7ccc2c4ca7e" - -SRC_URI = "http://01.org/sites/default/files/downloads/powertop-v${PV}.tar.gz \ -" - -SRC_URI[md5sum] = "a69bd55901cf919cc564187402ea2c9c" -SRC_URI[sha256sum] = "d3b7459eaba7d01c8841dd33a3b4d369416c01e9bd8951b0d88234cf18fe4a75" - -UPSTREAM_CHECK_URI = "https://01.org/powertop/downloads" -UPSTREAM_CHECK_REGEX = "powertop-[v]?(?P<pver>\d+(\.\d+)+)\.tar" - -inherit autotools gettext pkgconfig - -S = "${WORKDIR}/${BPN}-v${PV}" - -# we do not want libncursesw if we can -do_configure_prepend() { - # configure.ac checks for delwin() in "ncursesw ncurses" so let's drop first one - sed -i -e "s/ncursesw//g" ${S}/configure.ac - mkdir -p ${B}/src/tuning/ -} - -inherit update-alternatives -ALTERNATIVE_${PN} = "powertop" -ALTERNATIVE_TARGET[powertop] = "${sbindir}/powertop" -ALTERNATIVE_LINK_NAME[powertop] = "${sbindir}/powertop" -ALTERNATIVE_PRIORITY = "100" diff --git a/meta/recipes-kernel/powertop/powertop_2.15.bb b/meta/recipes-kernel/powertop/powertop_2.15.bb new file mode 100644 index 0000000000..65c6d0fcd3 --- /dev/null +++ b/meta/recipes-kernel/powertop/powertop_2.15.bb @@ -0,0 +1,24 @@ +SUMMARY = "Power usage tool" +DESCRIPTION = "Linux tool to diagnose issues with power consumption and power management." +HOMEPAGE = "https://01.org/powertop/" +BUGTRACKER = "https://app.devzing.com/powertopbugs/bugzilla" +DEPENDS = "ncurses libnl pciutils autoconf-archive-native" +LICENSE = "GPL-2.0-only" +LIC_FILES_CHKSUM = "file://COPYING;md5=12f884d2ae1ff87c09e5b7ccc2c4ca7e" + +SRC_URI = "git://github.com/fenrus75/powertop;protocol=https;branch=master \ + file://0001-wakeup_xxx.h-include-limits.h.patch \ + " +SRCREV = "d51ad395436d4d1dcc3ca46e1519ffeb475bf651" + +S = "${WORKDIR}/git" + +LDFLAGS:append = " -pthread" + +inherit autotools gettext pkgconfig bash-completion + +inherit update-alternatives +ALTERNATIVE:${PN} = "powertop" +ALTERNATIVE_TARGET[powertop] = "${sbindir}/powertop" +ALTERNATIVE_LINK_NAME[powertop] = "${sbindir}/powertop" +ALTERNATIVE_PRIORITY = "100" diff --git a/meta/recipes-kernel/sysprof/files/0001-Do-not-build-anything-in-help-as-it-requires-itstool.patch b/meta/recipes-kernel/sysprof/files/0001-Do-not-build-anything-in-help-as-it-requires-itstool.patch deleted file mode 100644 index ade51cf864..0000000000 --- a/meta/recipes-kernel/sysprof/files/0001-Do-not-build-anything-in-help-as-it-requires-itstool.patch +++ /dev/null @@ -1,27 +0,0 @@ -From d332b480257aa98b63d39c3c94896a111536f937 Mon Sep 17 00:00:00 2001 -From: Alexander Kanavin <alex.kanavin@gmail.com> -Date: Wed, 23 Aug 2017 18:38:26 +0300 -Subject: [PATCH 2/2] Do not build anything in help/ as it requires itstool. - -Upstream-Status: Inappropriate [oe-core specific] -Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> - ---- - meson.build | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/meson.build b/meson.build -index 3986273..ae2f65e 100644 ---- a/meson.build -+++ b/meson.build -@@ -164,7 +164,6 @@ subdir('tools') - subdir('tests') - - subdir('data') --subdir('help') - subdir('po') - - meson.add_install_script('build-aux/meson/post_install.sh') --- -2.7.4 - diff --git a/meta/recipes-kernel/sysprof/files/define-NT_GNU_BUILD_ID.patch b/meta/recipes-kernel/sysprof/files/define-NT_GNU_BUILD_ID.patch deleted file mode 100644 index f75ddad43a..0000000000 --- a/meta/recipes-kernel/sysprof/files/define-NT_GNU_BUILD_ID.patch +++ /dev/null @@ -1,22 +0,0 @@ -On uclibc elf.h does not have GNU extentions but we need this define -so we define it locally if its not getting it from elf.h - -Signed-off-by: Khem Raj <raj.khem@gmail.com> - -Upstream-Status: Pending - -Index: git/elfparser.h -=================================================================== ---- git.orig/lib/util/elfparser.h 2011-07-16 18:57:41.000000000 -0700 -+++ git/lib/util/elfparser.h 2011-07-16 20:28:54.733829895 -0700 -@@ -17,6 +17,10 @@ - */ - #include <glib.h> - -+#ifndef NT_GNU_BUILD_ID -+#define NT_GNU_BUILD_ID 3 -+#endif -+ - typedef struct ElfSym ElfSym; - typedef struct ElfParser ElfParser; - diff --git a/meta/recipes-kernel/sysprof/sysprof_3.30.2.bb b/meta/recipes-kernel/sysprof/sysprof_3.30.2.bb deleted file mode 100644 index 24e49cb0d5..0000000000 --- a/meta/recipes-kernel/sysprof/sysprof_3.30.2.bb +++ /dev/null @@ -1,32 +0,0 @@ -SUMMARY = "System-wide Performance Profiler for Linux" -HOMEPAGE = "http://www.sysprof.com" -LICENSE = "GPLv3+" -LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \ - file://src/sp-application.c;endline=17;md5=40e55577ef122c88fe20052acda64875" - -GNOMEBASEBUILDCLASS = "meson" -inherit gnomebase gettext systemd upstream-version-is-even gsettings - -DEPENDS = "glib-2.0 libxml2-native glib-2.0-native" - -SRC_URI[archive.md5sum] = "80cb47906eced2e7b9976bf00deec323" -SRC_URI[archive.sha256sum] = "e90878e5a509bd79d170a7a51d47cc5508ab1363afaf0d97654373dfd9c8ba0b" -SRC_URI += " \ - file://define-NT_GNU_BUILD_ID.patch \ - file://0001-Do-not-build-anything-in-help-as-it-requires-itstool.patch \ - " - -PACKAGECONFIG ?= "${@bb.utils.contains_any('DISTRO_FEATURES', '${GTK3DISTROFEATURES}', 'gtk', '', d)}" -PACKAGECONFIG[gtk] = "-Denable_gtk=true,-Denable_gtk=false,gtk+3" -PACKAGECONFIG[sysprofd] = "-Dwith_sysprofd=bundled,-Dwith_sysprofd=none,polkit" - -SOLIBS = ".so" -FILES_SOLIBSDEV = "" - -SYSTEMD_SERVICE_${PN} = "${@bb.utils.contains('PACKAGECONFIG', 'sysprofd', 'sysprof2.service', '', d)}" - -FILES_${PN} += " \ - ${datadir}/dbus-1/system-services \ - ${datadir}/dbus-1/system.d \ - ${datadir}/metainfo \ - " diff --git a/meta/recipes-kernel/systemtap/systemtap-native_git.bb b/meta/recipes-kernel/systemtap/systemtap-native_git.bb index 19cc1cf0f0..2690b259c8 100644 --- a/meta/recipes-kernel/systemtap/systemtap-native_git.bb +++ b/meta/recipes-kernel/systemtap/systemtap-native_git.bb @@ -1,6 +1,6 @@ require systemtap_git.bb -inherit native +inherit_defer native addtask addto_recipe_sysroot after do_populate_sysroot before do_build diff --git a/meta/recipes-kernel/systemtap/systemtap-uprobes_git.bb b/meta/recipes-kernel/systemtap/systemtap-uprobes_git.bb deleted file mode 100644 index 46820ef489..0000000000 --- a/meta/recipes-kernel/systemtap/systemtap-uprobes_git.bb +++ /dev/null @@ -1,40 +0,0 @@ -SUMMARY = "UProbes kernel module for SystemTap" - -require systemtap_git.inc - -DEPENDS = "systemtap virtual/kernel" - -# On systems without CONFIG_UTRACE, this package is empty. -ALLOW_EMPTY_${PN} = "1" - -inherit module-base gettext - -FILESEXTRAPATHS =. "${FILE_DIRNAME}/systemtap:" - -FILES_${PN} += "${datadir}/systemtap/runtime/uprobes" - -# Compile and install the uprobes kernel module on machines with utrace -# support. Note that staprun expects it in the systemtap/runtime directory, -# not in /lib/modules. -do_compile() { - if grep -q "CONFIG_UTRACE=y" ${STAGING_KERNEL_BUILDDIR}/.config - then - unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS CC LD CPP - oe_runmake CC="${KERNEL_CC}" LD="${KERNEL_LD}" \ - AR="${KERNEL_AR}" \ - -C ${STAGING_KERNEL_DIR} scripts - oe_runmake KDIR=${STAGING_KERNEL_DIR} \ - M="${S}/runtime/uprobes/" \ - CC="${KERNEL_CC}" LD="${KERNEL_LD}" \ - AR="${KERNEL_AR}" \ - -C "${S}/runtime/uprobes/" - fi -} - -do_install() { - if [ -e "${S}/runtime/uprobes/uprobes.ko" ] - then - install -d ${D}${datadir}/systemtap/runtime/uprobes/ - install -m 0644 ${S}/runtime/uprobes/uprobes.ko ${D}${datadir}/systemtap/runtime/uprobes/ - fi -} diff --git a/meta/recipes-kernel/systemtap/systemtap/0001-Makefile.am-remove-runtime-linux-uprobes-and-runtime.patch b/meta/recipes-kernel/systemtap/systemtap/0001-Makefile.am-remove-runtime-linux-uprobes-and-runtime.patch new file mode 100644 index 0000000000..2d46a3962d --- /dev/null +++ b/meta/recipes-kernel/systemtap/systemtap/0001-Makefile.am-remove-runtime-linux-uprobes-and-runtime.patch @@ -0,0 +1,40 @@ +From 5a01e28bd806326b2143e3e6bb28d4780c5d879d Mon Sep 17 00:00:00 2001 +From: Victor Kamensky <victor.kamensky7@gmail.com> +Date: Sun, 3 Dec 2023 18:40:05 -0800 +Subject: [PATCH] Makefile.am: remove runtime/linux/uprobes and + runtime/linux/uprobes2 install + +"PR30434 continuation: Removed old uprobes, uprobes2 implementation, +uprobes-inc.h & any mentions of CONFIG_UTRACE." commit removed uprobes, +and uprobes2 sources and directories, but Makefile.am still tries to +install them. In fact after failing to 'cd' into runtime/linux/uprobes +directory it copies top level *.[ch] files into +${prefix}/share/systemtap/runtime/linux/uprobes directory. + +The issue was caught by OpenEmbedded project do_package_qa checks. + +Signed-off-by: Victor Kamensky <victor.kamensky7@gmail.com> + +Upstream-Status: Submitted [https://sourceware.org/pipermail/systemtap/2023q4/027880.html] +--- + Makefile.am | 4 ---- + 1 file changed, 4 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index 5737c6b20..2ba896088 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -277,10 +277,6 @@ endif + do $(INSTALL_DATA) -D $$f $(DESTDIR)$(pkgdatadir)/runtime/softfloat/$$f; done) + (cd $(srcdir)/runtime/linux; for f in *.[ch]; \ + do $(INSTALL_DATA) -D $$f $(DESTDIR)$(pkgdatadir)/runtime/linux/$$f; done) +- (cd $(srcdir)/runtime/linux/uprobes; for f in Makefile *.[ch]; \ +- do $(INSTALL_DATA) -D $$f $(DESTDIR)$(pkgdatadir)/runtime/linux/uprobes/$$f; done) +- (cd $(srcdir)/runtime/linux/uprobes2; for f in *.[ch]; \ +- do $(INSTALL_DATA) -D $$f $(DESTDIR)$(pkgdatadir)/runtime/linux/uprobes2/$$f; done) + (cd $(srcdir)/tapset; find . \( -name '*.stp' -o -name '*.stpm' -o -name README \) -print \ + | while read f; do $(INSTALL_DATA) -D $$f $(DESTDIR)$(pkgdatadir)/tapset/$$f; done) + (cd $(srcdir)/testsuite/systemtap.examples; find . -type f -print \ +-- +2.31.1 + diff --git a/meta/recipes-kernel/systemtap/systemtap/0001-bpf-translate.cxx-fix-build-against-upcoming-gcc-14-.patch b/meta/recipes-kernel/systemtap/systemtap/0001-bpf-translate.cxx-fix-build-against-upcoming-gcc-14-.patch new file mode 100644 index 0000000000..e3d94d9312 --- /dev/null +++ b/meta/recipes-kernel/systemtap/systemtap/0001-bpf-translate.cxx-fix-build-against-upcoming-gcc-14-.patch @@ -0,0 +1,40 @@ +From d42139cf9cd26d0c0363fcfe007716baeb8de517 Mon Sep 17 00:00:00 2001 +From: Sergei Trofimovich <slyich@gmail.com> +Date: Fri, 22 Dec 2023 19:42:38 +0000 +Subject: [PATCH] bpf-translate.cxx: fix build against upcoming `gcc-14` + (`-Werror=calloc-transposed-args`) + +`gcc-14` added a new `-Wcalloc-transposed-args` warning recently. It +detected minor infelicity in `calloc()` API usage in `systemtap`: + + bpf-translate.cxx: In function 'bpf::BPF_Section* bpf::output_probe(BPF_Output&, program&, const std::string&, unsigned int)': + bpf-translate.cxx:5044:39: error: 'void* calloc(size_t, size_t)' sizes specified with 'sizeof' in the earlier argument and not in the later argument [-Werror=calloc-transposed-args] + 5044 | bpf_insn *buf = (bpf_insn*) calloc (sizeof(bpf_insn), ninsns); + | ^~~~~~~~~~~~~~~~ + bpf-translate.cxx:5044:39: note: earlier argument should specify number of elements, later size of each element + +Upstream-Status: Backport [https://sourceware.org/git/?p=systemtap.git;a=commit;h=d42139cf9cd26d0c0363fcfe007716baeb8de517] +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + bpf-translate.cxx | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/bpf-translate.cxx b/bpf-translate.cxx +index 1a9302463..aa8ef65ce 100644 +--- a/bpf-translate.cxx ++++ b/bpf-translate.cxx +@@ -5041,9 +5041,9 @@ output_probe(BPF_Output &eo, program &prog, + } + } + +- bpf_insn *buf = (bpf_insn*) calloc (sizeof(bpf_insn), ninsns); ++ bpf_insn *buf = (bpf_insn*) calloc (ninsns, sizeof(bpf_insn)); + assert (buf); +- Elf64_Rel *rel = (Elf64_Rel*) calloc (sizeof(Elf64_Rel), nreloc); ++ Elf64_Rel *rel = (Elf64_Rel*) calloc (nreloc, sizeof(Elf64_Rel)); + assert (rel); + + unsigned i = 0, r = 0; +-- +2.43.0 + diff --git a/meta/recipes-kernel/systemtap/systemtap/0001-configure.ac-fix-broken-libdebuginfod-library-auto-d.patch b/meta/recipes-kernel/systemtap/systemtap/0001-configure.ac-fix-broken-libdebuginfod-library-auto-d.patch new file mode 100644 index 0000000000..98641826f6 --- /dev/null +++ b/meta/recipes-kernel/systemtap/systemtap/0001-configure.ac-fix-broken-libdebuginfod-library-auto-d.patch @@ -0,0 +1,51 @@ +From 3913ad3e28a19811e1b52338112344a487057e4f Mon Sep 17 00:00:00 2001 +From: Victor Kamensky <victor.kamensky7@gmail.com> +Date: Mon, 18 Dec 2023 03:13:38 +0000 +Subject: [PATCH 1/2] configure.ac: fix broken libdebuginfod library auto + detection + +After 2e67b053e3796ee7cf29a39f9698729b52078406 "configury: rework debuginfod searches" +commit, libdebuginfod.so library auto detection is broken. It was reported by Martin Jansa +on openembedded-core mailing list [1]. + +Currently configure.ac does "AC_DEFINE([HAVE_LIBDEBUGINFOD], [1] ..." as long as +no --without-debuginfod option is passed, regardless PKG_CHECK_MODULES check result. +It seems to be bad copy/paste. Address the issue by moving the AC_DEFINE back to +PKG_CHECK_MODULES action-if-found block. + +To reproduce the issue on FC system, one can do the following +"sudo dnf remove elfutils-debuginfod-client-devel" and then try to build SystemTap +util.cxx will fail to compile because of missing elfutils/debuginfod.h because +config.h will have "#define HAVE_LIBDEBUGINFOD 1", while config.log and configure +output indicates that check for libdebuginfod library failed. + +[1] https://lists.openembedded.org/g/openembedded-core/message/192109?p=%2C%2C%2C20%2C0%2C0%2C0%3A%3Acreated%2C0%2Csystemtap%2C20%2C2%2C0%2C102987514 + +Upstream-Status: Submitted [https://sourceware.org/pipermail/systemtap/2023q4/027914.html] +Signed-off-by: Victor Kamensky <victor.kamensky7@gmail.com> +--- + configure.ac | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +diff --git a/configure.ac b/configure.ac +index d9559c5c3..18cd7f84a 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -219,12 +219,11 @@ dnl take the user at his or her word + elif test "x$with_debuginfod" != xno; then + dnl check in the system pkgconfig + PKG_CHECK_MODULES([debuginfod], [libdebuginfod >= 0.179], +- [have_debuginfod=1], ++ [have_debuginfod=1 ++ AC_DEFINE([HAVE_LIBDEBUGINFOD], [1], [Define to 1 if debuginfod is enabled.])], + [if test "x$with_debuginfod" = xyes; then + AC_MSG_ERROR(["--with-debuginfod was given, but libdebuginfod is missing or unusable."]) + fi]) +- AC_DEFINE([HAVE_LIBDEBUGINFOD], [1], [Define to 1 if debuginfod is enabled.]) +- AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi +-- +2.31.1 + diff --git a/meta/recipes-kernel/systemtap/systemtap/0001-prerelease-datestamp-fixes.patch b/meta/recipes-kernel/systemtap/systemtap/0001-prerelease-datestamp-fixes.patch new file mode 100644 index 0000000000..afdc10a3fe --- /dev/null +++ b/meta/recipes-kernel/systemtap/systemtap/0001-prerelease-datestamp-fixes.patch @@ -0,0 +1,23 @@ +From cfc2c1d53924face11e3fab78ded61c359778eb9 Mon Sep 17 00:00:00 2001 +From: "Frank Ch. Eigler" <fche@redhat.com> +Date: Sat, 4 Nov 2023 12:19:59 -0400 +Subject: [PATCH] prerelease datestamp fixes + +Upstream-Status: Backport +--- + NEWS | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/NEWS b/NEWS +index c7f31e8b7..f0f9056c4 100644 +--- a/NEWS ++++ b/NEWS +@@ -1,4 +1,4 @@ +-* What's new in version 5.0, 2023-11-03 ++* What's new in version 5.0, 2023-11-04 + + - Performance improvements in uprobe registration and module startup. + +-- +2.31.1 + diff --git a/meta/recipes-kernel/systemtap/systemtap/0001-staprun-address-ncurses-6.3-failures.patch b/meta/recipes-kernel/systemtap/systemtap/0001-staprun-address-ncurses-6.3-failures.patch new file mode 100644 index 0000000000..1decf21593 --- /dev/null +++ b/meta/recipes-kernel/systemtap/systemtap/0001-staprun-address-ncurses-6.3-failures.patch @@ -0,0 +1,61 @@ +From 191f528da19193d713d94ee252e2485efd9af4d3 Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <alex@linutronix.de> +Date: Mon, 25 Oct 2021 17:59:24 +0200 +Subject: [PATCH] staprun: address ncurses 6.3 failures + +Upstream-Status: Submitted [by email to smakarov@redhat.com,systemtap@sourceware.org] +Signed-off-by: Alexander Kanavin <alex@linutronix.de> +--- + staprun/monitor.c | 24 ++++++++++++------------ + 1 file changed, 12 insertions(+), 12 deletions(-) + +diff --git a/staprun/monitor.c b/staprun/monitor.c +index 478634c09..f4fbfd686 100644 +--- a/staprun/monitor.c ++++ b/staprun/monitor.c +@@ -448,12 +448,12 @@ void monitor_render(void) + if (active_window == 0) + wattron(status, A_BOLD); + wprintw(status, "\n%*s\t%*s\t%*s\t%*s\t%*s\t%*s\t%s\n", +- width[p_index], HIGHLIGHT("index", p_index, comp_fn_index), +- width[p_state], HIGHLIGHT("state", p_state, comp_fn_index), +- width[p_hits], HIGHLIGHT("hits", p_hits, comp_fn_index), +- width[p_min], HIGHLIGHT("min", p_min, comp_fn_index), +- width[p_avg], HIGHLIGHT("avg", p_avg, comp_fn_index), +- width[p_max], HIGHLIGHT("max", p_max, comp_fn_index), ++ (int)width[p_index], HIGHLIGHT("index", p_index, comp_fn_index), ++ (int)width[p_state], HIGHLIGHT("state", p_state, comp_fn_index), ++ (int)width[p_hits], HIGHLIGHT("hits", p_hits, comp_fn_index), ++ (int)width[p_min], HIGHLIGHT("min", p_min, comp_fn_index), ++ (int)width[p_avg], HIGHLIGHT("avg", p_avg, comp_fn_index), ++ (int)width[p_max], HIGHLIGHT("max", p_max, comp_fn_index), + HIGHLIGHT("name", p_name, comp_fn_index)); + if (active_window == 0) + wattroff(status, A_BOLD); +@@ -466,17 +466,17 @@ void monitor_render(void) + json_object *probe, *field; + probe = json_object_array_get_idx(jso_probe_list, i); + json_object_object_get_ex(probe, "index", &field); +- wprintw(status, "%*s\t", width[p_index], json_object_get_string(field)); ++ wprintw(status, "%*s\t", (int)width[p_index], json_object_get_string(field)); + json_object_object_get_ex(probe, "state", &field); +- wprintw(status, "%*s\t", width[p_state], json_object_get_string(field)); ++ wprintw(status, "%*s\t", (int)width[p_state], json_object_get_string(field)); + json_object_object_get_ex(probe, "hits", &field); +- wprintw(status, "%*s\t", width[p_hits], json_object_get_string(field)); ++ wprintw(status, "%*s\t", (int)width[p_hits], json_object_get_string(field)); + json_object_object_get_ex(probe, "min", &field); +- wprintw(status, "%*s\t", width[p_min], json_object_get_string(field)); ++ wprintw(status, "%*s\t", (int)width[p_min], json_object_get_string(field)); + json_object_object_get_ex(probe, "avg", &field); +- wprintw(status, "%*s\t", width[p_avg], json_object_get_string(field)); ++ wprintw(status, "%*s\t", (int)width[p_avg], json_object_get_string(field)); + json_object_object_get_ex(probe, "max", &field); +- wprintw(status, "%*s\t", width[p_max], json_object_get_string(field)); ++ wprintw(status, "%*s\t", (int)width[p_max], json_object_get_string(field)); + getyx(status, discard, cur_x); + json_object_object_get_ex(probe, "name", &field); + wprintw(status, "%.*s", max_cols-cur_x-1, json_object_get_string(field)); +-- +2.20.1 + diff --git a/meta/recipes-kernel/systemtap/systemtap/0001-staprun-fix-build-against-upcoming-gcc-14-Werror-cal.patch b/meta/recipes-kernel/systemtap/systemtap/0001-staprun-fix-build-against-upcoming-gcc-14-Werror-cal.patch new file mode 100644 index 0000000000..22578fb3f6 --- /dev/null +++ b/meta/recipes-kernel/systemtap/systemtap/0001-staprun-fix-build-against-upcoming-gcc-14-Werror-cal.patch @@ -0,0 +1,36 @@ +From 52596f023652114642faba5726c99488529029ce Mon Sep 17 00:00:00 2001 +From: Sergei Trofimovich <slyich@gmail.com> +Date: Thu, 21 Dec 2023 10:00:06 +0000 +Subject: [PATCH] staprun: fix build against upcoming `gcc-14` + (`-Werror=calloc-transposed-args`) + +`gcc-14` added a new `-Wcalloc-transposed-args` warning recently. It +detected minor infelicity in `calloc()` API usage in `systemtap`: + + staprun.c: In function 'main': + staprun.c:550:50: error: 'calloc' sizes specified with 'sizeof' in the earlier argument and not in the later argument [-Werror=calloc-transposed-args] + 550 | char ** new_argv = calloc(sizeof(char *),argc+2); + | ^~~~ + +Upstream-Status: Backport [https://sourceware.org/git/?p=systemtap.git;a=commit;h=52596f023652114642faba5726c99488529029ce] +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + staprun/staprun.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/staprun/staprun.c b/staprun/staprun.c +index 8437f3af6..d1b0b221b 100644 +--- a/staprun/staprun.c ++++ b/staprun/staprun.c +@@ -547,7 +547,7 @@ int main(int argc, char **argv) + us to extend argv[], with all the C fun that entails. */ + #ifdef HAVE_OPENAT + if (relay_basedir_fd >= 0) { +- char ** new_argv = calloc(sizeof(char *),argc+2); ++ char ** new_argv = calloc(argc+2, sizeof(char *)); + const int new_Foption_size = 10; /* -FNNNNN */ + char * new_Foption = malloc(new_Foption_size); + int i; +-- +2.43.0 + diff --git a/meta/recipes-kernel/systemtap/systemtap/configure-allow-to-disable-libvirt.patch b/meta/recipes-kernel/systemtap/systemtap/configure-allow-to-disable-libvirt.patch deleted file mode 100644 index b4f2fbc066..0000000000 --- a/meta/recipes-kernel/systemtap/systemtap/configure-allow-to-disable-libvirt.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 5eb10d90af9178edb65e6091ae939d1b5b19bb78 Mon Sep 17 00:00:00 2001 -From: Wenzong Fan <wenzong.fan@windriver.com> -Date: Tue, 23 Sep 2014 04:47:10 -0400 -Subject: [PATCH] systemtap: allow to disable libvirt - -Upstream-Status: Pending - -Signed-off-by: Wenzong Fan <wenzong.fan@windriver.com> ---- - configure.ac | 13 +++++++++---- - 1 file changed, 9 insertions(+), 4 deletions(-) - -diff --git a/configure.ac b/configure.ac -index a631ae7..cb4885b 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -525,10 +525,15 @@ dnl Check for the libvirt and libxml2 devel packages - - dnl We require libvirt >= 1.0.2 because stapvirt relies on the - dnl virDomainOpenChannel function, which was implemented in 1.0.2. --PKG_CHECK_MODULES([libvirt], [libvirt >= 1.0.2], [ -- have_libvirt=yes -- AC_DEFINE([HAVE_LIBVIRT],[1],[Define to 1 if libvirt development libraries are installed]) -- ], [have_libvirt=no]) -+AC_ARG_ENABLE([libvirt], -+ AS_HELP_STRING([--disable-libvirt], [Do not use libvirt even if present])) -+ -+if test "$enable_libvirt" != no; then -+ PKG_CHECK_MODULES([libvirt], [libvirt >= 1.0.2], [ -+ have_libvirt=yes -+ AC_DEFINE([HAVE_LIBVIRT],[1],[Define to 1 if libvirt development libraries are installed]) -+ ], [have_libvirt=no]) -+fi - AM_CONDITIONAL([HAVE_LIBVIRT], [test "${have_libvirt}" = "yes"]) - PKG_CHECK_MODULES([libxml2], [libxml-2.0], [ - have_libxml2=yes --- -1.7.9.5 - diff --git a/meta/recipes-kernel/systemtap/systemtap/monitor-option.patch b/meta/recipes-kernel/systemtap/systemtap/monitor-option.patch deleted file mode 100644 index 9313a5aba3..0000000000 --- a/meta/recipes-kernel/systemtap/systemtap/monitor-option.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 93fc4744fedf6fc593ee656968da97f7b1862ada Mon Sep 17 00:00:00 2001 -From: Ross Burton <ross.burton@intel.com> -Date: Tue, 4 Oct 2016 16:37:53 +0100 -Subject: [PATCH 4/6] systemtap: rationalise dependencies - -Add an option to explicitly disable the monitor (and therefore the dependency on -json-c and ncurses). - -Upstream-Status: Pending -Signed-off-by: Ross Burton <ross.burton@intel.com> - ---- - configure.ac | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -Index: git/configure.ac -=================================================================== ---- git.orig/configure.ac -+++ git/configure.ac -@@ -766,13 +766,16 @@ dnl We want either (or both) python prob - AM_CONDITIONAL([HAVE_PYTHON_PROBES], - [test "x$have_python2_support" = "xyes" -o "x$have_python3_support" = "xyes"]) - -+AC_ARG_ENABLE([monitor], AS_HELP_STRING([--disable-monitor],[Disable monitor])) -+if test "$enable_monitor" != "no"; then - dnl Check for presence of json-c and ncurses for use in monitor mode - PKG_CHECK_MODULES([jsonc], [json-c >= 0.11], [have_jsonc=yes], [have_jsonc=no]) - PKG_CHECK_MODULES([ncurses], [ncurses], [have_ncurses=yes], [have_ncurses=no]) --AM_CONDITIONAL([HAVE_MONITOR_LIBS], [test "${have_jsonc}" == "yes" -a "${have_ncurses}" == "yes"]) - if test "${have_jsonc}" == "yes" -a "${have_ncurses}" == yes; then - AC_DEFINE([HAVE_MONITOR_LIBS],[1],[Define to 1 if json-c and ncurses libraries are installed]) - fi -+fi -+AM_CONDITIONAL([HAVE_MONITOR_LIBS], [test "${have_jsonc}" == "yes" -a "${have_ncurses}" == "yes" -a "$enable_monitor" != "no"]) - - AC_CACHE_CHECK([for assembler .section "?" flags support], stap_cv_sectionq, [ - old_CFLAGS="$CFLAGS" diff --git a/meta/recipes-kernel/systemtap/systemtap/no-msgfmt-check.patch b/meta/recipes-kernel/systemtap/systemtap/no-msgfmt-check.patch deleted file mode 100644 index 2c860b19e5..0000000000 --- a/meta/recipes-kernel/systemtap/systemtap/no-msgfmt-check.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 43f1b04449bb1cf7e0092263f1c2a25f3fca08ef Mon Sep 17 00:00:00 2001 -From: Ross Burton <ross.burton@intel.com> -Date: Tue, 8 Nov 2016 23:07:41 +0000 -Subject: [PATCH 5/6] systemtap: remove explicit msgfmt check - -There is no need to explicitly check that msgfmt was found as the gettext macros -handle this for us if NLS is enabled. - -Upstream-Status: Pending -Signed-off-by: Ross Burton <ross.burton@intel.com> - ---- - configure.ac | 4 ---- - 1 file changed, 4 deletions(-) - -diff --git a/configure.ac b/configure.ac -index 2ea9b3cbf..95417f59c 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -36,10 +36,6 @@ AC_CHECK_FUNCS(openat) - AM_GNU_GETTEXT(external) - AM_GNU_GETTEXT_VERSION([0.19.4]) - --if test "x$GMSGFMT" = "x:"; then -- AC_MSG_ERROR([missing gnu /usr/bin/msgfmt]) --fi -- - # We want the 'PYTHON' varible to be python version 2. We also want - # our custom 'PYTHON3' varible to be python version 3. - # --- -2.11.0 - diff --git a/meta/recipes-kernel/systemtap/systemtap/x32_abi_time.patch b/meta/recipes-kernel/systemtap/systemtap/x32_abi_time.patch deleted file mode 100644 index 28a7eae407..0000000000 --- a/meta/recipes-kernel/systemtap/systemtap/x32_abi_time.patch +++ /dev/null @@ -1,34 +0,0 @@ -Fix time_t print because in x32 ABI is long long int instead of long int. - -Upstream-Status: Pending - -Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com> - -diff --git a/cache.cxx b/cache.cxx -index 3546b30..19c77ca 100644 ---- a/cache.cxx -+++ b/cache.cxx -@@ -294,7 +294,11 @@ clean_cache(systemtap_session& s) - { - //interval not passed, don't continue - if (s.verbose > 1) -+#if defined(__x86_64__) && defined (__ILP32__) -+ clog << _F("Cache cleaning skipped, interval not reached %lld s / %lu s.", -+#else - clog << _F("Cache cleaning skipped, interval not reached %lu s / %lu s.", -+#endif - (current_time.tv_sec-sb.st_mtime), cache_clean_interval) << endl; - return; - } -@@ -302,7 +306,11 @@ clean_cache(systemtap_session& s) - { - //interval reached, continue - if (s.verbose > 1) -+#if defined(__x86_64__) && defined (__ILP32__) -+ clog << _F("Cleaning cache, interval reached %lld s > %lu s.", -+#else - clog << _F("Cleaning cache, interval reached %lu s > %lu s.", -+#endif - (current_time.tv_sec-sb.st_mtime), cache_clean_interval) << endl; - } - diff --git a/meta/recipes-kernel/systemtap/systemtap_git.bb b/meta/recipes-kernel/systemtap/systemtap_git.bb index 6ee3e1c0f7..68f5c76428 100644 --- a/meta/recipes-kernel/systemtap/systemtap_git.bb +++ b/meta/recipes-kernel/systemtap/systemtap_git.bb @@ -1,9 +1,15 @@ SUMMARY = "Script-directed dynamic tracing and performance analysis tool for Linux" +DESCRIPTION = "It provides free software infrastructure to simplify the \ +gathering of information about the running Linux system. This assists \ +diagnosis of a performance or functional problem." HOMEPAGE = "https://sourceware.org/systemtap/" require systemtap_git.inc -SRC_URI += "file://0001-improve-reproducibility-for-c-compiling.patch" +SRC_URI += " \ + file://0001-improve-reproducibility-for-c-compiling.patch \ + file://0001-staprun-address-ncurses-6.3-failures.patch \ + " DEPENDS = "elfutils" @@ -18,46 +24,80 @@ STAP_DOCS ?= "--disable-docs --disable-publican --disable-refdocs" EXTRA_OECONF += "${STAP_DOCS} " -PACKAGECONFIG ??= "translator sqlite monitor python3-probes" -PACKAGECONFIG[translator] = "--enable-translator,--disable-translator,boost,python3-core bash perl" +PACKAGECONFIG ??= "translator sqlite monitor python3-probes ${@bb.utils.filter('DISTRO_FEATURES', 'debuginfod', d)}" +PACKAGECONFIG[translator] = "--enable-translator,--disable-translator,boost,bash" PACKAGECONFIG[libvirt] = "--enable-libvirt,--disable-libvirt,libvirt" PACKAGECONFIG[sqlite] = "--enable-sqlite,--disable-sqlite,sqlite3" PACKAGECONFIG[monitor] = "--enable-monitor,--disable-monitor,ncurses json-c" PACKAGECONFIG[python3-probes] = "--with-python3-probes,--without-python3-probes,python3-setuptools-native" +PACKAGECONFIG[debuginfod] = "--with-debuginfod, --without-debuginfod" -inherit autotools gettext pkgconfig distutils3-base systemd +inherit autotools gettext pkgconfig systemd +inherit_defer ${@bb.utils.contains('PACKAGECONFIG', 'python3-probes', 'setuptools3-base', '', d)} -PACKAGES =+ "${PN}-exporter" +# | ../git/elaborate.cxx:2601:21: error: storing the address of local variable 'sym' in '*s.systemtap_session::symbol_resolver' [-Werror=dangling-pointer=] +CXXFLAGS += "-Wno-dangling-pointer" -FILES_${PN}-exporter = "${sysconfdir}/stap-exporter/* \ +# exporter comes with python3-probes +PACKAGES =+ "${PN}-exporter" +FILES:${PN}-exporter = "${sysconfdir}/stap-exporter/* \ ${sysconfdir}/sysconfig/stap-exporter \ - ${systemd_unitdir}/system/stap-exporter.service \ + ${systemd_system_unitdir}/stap-exporter.service \ ${sbindir}/stap-exporter" - -RDEPENDS_${PN}-exporter = "${PN} python3-core python3-netclient" - -SYSTEMD_SERVICE_${PN}-exporter = "stap-exporter.service" - -do_configure_prepend () { +RDEPENDS:${PN}-exporter = "${PN} python3-core python3-netclient" +SYSTEMD_SERVICE:${PN}-exporter = "stap-exporter.service" + +PACKAGES =+ "${PN}-runtime" +FILES:${PN}-runtime = "\ + ${bindir}/staprun \ + ${bindir}/stap-merge \ + ${bindir}/stapsh \ + ${libexecdir}/${BPN}/stapio \ +" +RDEPENDS:${PN}:class-target += "${PN}-runtime" + +PACKAGES =+ "${PN}-examples" +FILES:${PN}-examples = "${datadir}/${BPN}/examples/" +RDEPENDS:${PN}-examples += "${PN}" + +# don't complain that some examples involve bash, perl, php... +INSANE_SKIP:${PN}-examples += "file-rdeps" + +PACKAGES =+ "${PN}-python" +FILES:${PN}-python += "\ + ${bindir}/dtrace \ + ${libdir}/python*/ \ + ${libexecdir}/${BPN}/python/ \ +" +# python material requires sdt headers +RDEPENDS:${PN}-python += "${PN}-dev python3-core" +INSANE_SKIP:${PN}-python += "dev-deps" + +do_configure:prepend () { # Improve reproducibility for c++ object files reltivepath="${@os.path.relpath(d.getVar('STAGING_INCDIR'), d.getVar('S'))}" sed -i "s:@RELATIVE_STAGING_INCDIR@:$reltivepath:g" ${S}/stringtable.h } -do_install_append () { +do_install:append () { if [ ! -f ${D}${bindir}/stap ]; then # translator disabled case, need to leave only minimal runtime rm -rf ${D}${datadir}/${PN} rm ${D}${libexecdir}/${PN}/stap-env fi - # Fix makefile hardcoded path assumptions for systemd (assumes $prefix) - install -d `dirname ${D}${systemd_unitdir}` - mv ${D}${prefix}/lib/systemd `dirname ${D}${systemd_unitdir}` - rmdir ${D}${prefix}/lib --ignore-fail-on-non-empty + if [ -d ${D}${prefix}/lib/systemd -a ${D}${prefix}/lib != `dirname ${D}${systemd_unitdir}` ]; then + # Fix makefile hardcoded path assumptions for systemd (assumes $prefix) + # without usrmerge distro feature enabled + install -d `dirname ${D}${systemd_unitdir}` + mv ${D}${prefix}/lib/systemd `dirname ${D}${systemd_unitdir}` + rmdir ${D}${prefix}/lib --ignore-fail-on-non-empty + fi # Ensure correct ownership for files copied in - chown root:root ${D}${sysconfdir}/stap-exporter/* -R + if [ -d ${D}${sysconfdir}/stap-exporter ]; then + chown root:root ${D}${sysconfdir}/stap-exporter/* -R + fi } BBCLASSEXTEND = "nativesdk" diff --git a/meta/recipes-kernel/systemtap/systemtap_git.inc b/meta/recipes-kernel/systemtap/systemtap_git.inc index 54de722660..c574bcb2ba 100644 --- a/meta/recipes-kernel/systemtap/systemtap_git.inc +++ b/meta/recipes-kernel/systemtap/systemtap_git.inc @@ -1,20 +1,21 @@ -LICENSE = "GPLv2" +LICENSE = "GPL-2.0-only" LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263" -SRCREV = "90ff34ac0506f0d5440393a4c78565f6aaf9b726" -PV = "4.0" +SRCREV = "e72dc118e563c645d93a1a2d771e8d90e8fec1ae" +PV = "5.0" -SRC_URI = "git://sourceware.org/git/systemtap.git \ - file://configure-allow-to-disable-libvirt.patch \ - file://x32_abi_time.patch \ - file://monitor-option.patch \ - file://no-msgfmt-check.patch \ +SRC_URI = "git://sourceware.org/git/systemtap.git;branch=master;protocol=https \ file://0001-Do-not-let-configure-write-a-python-location-into-th.patch \ file://0001-Install-python-modules-to-correct-library-dir.patch \ file://0001-staprun-stapbpf-don-t-support-installing-a-non-root.patch \ + file://0001-Makefile.am-remove-runtime-linux-uprobes-and-runtime.patch \ + file://0001-prerelease-datestamp-fixes.patch \ + file://0001-configure.ac-fix-broken-libdebuginfod-library-auto-d.patch \ + file://0001-bpf-translate.cxx-fix-build-against-upcoming-gcc-14-.patch \ + file://0001-staprun-fix-build-against-upcoming-gcc-14-Werror-cal.patch \ " -COMPATIBLE_HOST = '(x86_64|i.86|powerpc|arm|aarch64|microblazeel|mips).*-linux' -COMPATIBLE_HOST_libc-musl = 'null' +COMPATIBLE_HOST = '(x86_64|i.86|powerpc|arm|aarch64|microblazeel|mips|riscv64).*-linux' +COMPATIBLE_HOST:libc-musl = 'null' S = "${WORKDIR}/git" diff --git a/meta/recipes-kernel/wireless-regdb/wireless-regdb_2024.01.23.bb b/meta/recipes-kernel/wireless-regdb/wireless-regdb_2024.01.23.bb new file mode 100644 index 0000000000..8fde236ab4 --- /dev/null +++ b/meta/recipes-kernel/wireless-regdb/wireless-regdb_2024.01.23.bb @@ -0,0 +1,43 @@ +SUMMARY = "Wireless Central Regulatory Domain Database" +HOMEPAGE = "https://wireless.wiki.kernel.org/en/developers/regulatory/crda" +SECTION = "net" +LICENSE = "ISC" +LIC_FILES_CHKSUM = "file://LICENSE;md5=07c4f6dea3845b02a18dc00c8c87699c" + +SRC_URI = "https://www.kernel.org/pub/software/network/${BPN}/${BP}.tar.xz" +SRC_URI[sha256sum] = "c8a61c9acf76fa7eb4239e89f640dee3e87098d9f69b4d3518c9c60fc6d20c55" + +inherit bin_package allarch + +do_install() { + install -d -m0755 ${D}${nonarch_libdir}/crda + install -d -m0755 ${D}${sysconfdir}/wireless-regdb/pubkeys + install -m 0644 regulatory.bin ${D}${nonarch_libdir}/crda/regulatory.bin + install -m 0644 wens.key.pub.pem ${D}${sysconfdir}/wireless-regdb/pubkeys/wens.key.pub.pem + + install -m 0644 -D regulatory.db ${D}${nonarch_base_libdir}/firmware/regulatory.db + install -m 0644 regulatory.db.p7s ${D}${nonarch_base_libdir}/firmware/regulatory.db.p7s +} + +# Install static regulatory DB in /lib/firmware for kernel to load. +# This requires Linux kernel >= v4.15. +# For kernel <= v4.14, inherit the kernel_wireless_regdb.bbclass +# (in meta-networking) in kernel's recipe. +PACKAGES = "${PN}-static ${PN}" +RCONFLICTS:${PN} = "${PN}-static" + +FILES:${PN}-static = " \ + ${nonarch_base_libdir}/firmware/regulatory.db \ + ${nonarch_base_libdir}/firmware/regulatory.db.p7s \ +" + +# Native users might want to use the source of regulatory DB. +# This is for example used by Linux kernel <= v4.14 and +# kernel_wireless_regdb.bbclass in meta-networking. +do_install:append:class-native() { + install -m 0644 -D db.txt ${D}${libdir}/crda/db.txt +} + +RSUGGESTS:${PN} = "crda" + +BBCLASSEXTEND = "native" |