From d33f32ceff31af1607abb823e54f413952f63f05 Mon Sep 17 00:00:00 2001 From: Luciano Dittgen Date: Wed, 11 Nov 2026 15:05:34 -0300 Subject: [PATCH 1/6] .oelint.cfg: Suppress oelint.var.licenseremotefile layer-wide Recipes whose only sources are files from this layer have no upstream license file to checksum. OE-Core points LIC_FILES_CHKSUM at ${COMMON_LICENSE_DIR} for such recipes, but oelint-adv flags any file:// path built from a variable other than WORKDIR, S or B, and the rule is unchanged up to 9.11.3. Suppress it for the whole layer so these recipes can use the common license text instead of shipping their own copy. Recipes that fetch a source still checksum the license file it ships. Tested with contrib/oelint/run-oelint.sh (no findings). Signed-off-by: Luciano Dittgen --- .oelint.cfg | 15 +++++++++++---- contrib/oelint/run-oelint.sh | 15 ++++++++------- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/.oelint.cfg b/.oelint.cfg index d98ccae..19d885d 100644 --- a/.oelint.cfg +++ b/.oelint.cfg @@ -1,12 +1,19 @@ # oelint-adv defaults for this layer. Auto-loaded when oelint-adv runs with this # directory as the working directory (see contrib/oelint/run-oelint.sh). # -# The only layer-wide suppression is oelint.var.bbclassextend: every recipe in -# this layer is target-only, so the "add BBCLASSEXTEND" suggestion never applies -# and would otherwise need a redundant inline comment on every single recipe. +# Layer-wide suppressions: +# * oelint.var.bbclassextend: every recipe in this layer is target-only, so the +# "add BBCLASSEXTEND" suggestion never applies and would otherwise need a +# redundant inline comment on every single recipe. +# * oelint.var.licenseremotefile: recipes whose only sources are files from +# this layer have no upstream license file to check, so they point +# LIC_FILES_CHKSUM at ${COMMON_LICENSE_DIR}, as OE-Core does for its own +# such recipes. Recipes that fetch a source must still checksum its license. # All other exceptions stay inline as '# nooelint: ' comments next to # the finding, so new recipes are always fully linted and each exception is # documented in place. [oelint] release = blacksail -suppress = oelint.var.bbclassextend +suppress = + oelint.var.bbclassextend + oelint.var.licenseremotefile diff --git a/contrib/oelint/run-oelint.sh b/contrib/oelint/run-oelint.sh index facd2a9..2d66f37 100755 --- a/contrib/oelint/run-oelint.sh +++ b/contrib/oelint/run-oelint.sh @@ -4,16 +4,17 @@ # All linter configuration is declarative and lives at the layer root, so this # script only has to enumerate the files (oelint-adv does not recurse into # directories): -# * .oelint.cfg - sets '--release' and the single layer-wide -# suppression (oelint.var.bbclassextend); auto-loaded -# from the working directory +# * .oelint.cfg - sets '--release' and the layer-wide suppressions +# (oelint.var.bbclassextend, +# oelint.var.licenseremotefile); auto-loaded from the +# working directory # * oelint.constants.json - the layer constant-DB additions, auto-loaded by # oelint-adv from the layer root (no --constantmods) # -# Aside from oelint.var.bbclassextend (which never applies to a target-only -# layer), exceptions stay inline as '# nooelint: ' comments next to the -# finding, so new recipes are always fully linted and each exception is -# documented in place (and flagged by oelint.file.inlinesuppress_na once stale). +# Aside from the layer-wide suppressions in .oelint.cfg, exceptions stay inline +# as '# nooelint: ' comments next to the finding, so new recipes are +# always fully linted and each exception is documented in place (and flagged by +# oelint.file.inlinesuppress_na once stale). set -eu # Neutralise CDPATH so 'cd' below can't print or jump to an unexpected dir. From 10026f054ffcd146e4983f992755c9589c807368 Mon Sep 17 00:00:00 2001 From: Luciano Dittgen Date: Fri, 6 Nov 2026 15:54:35 -0300 Subject: [PATCH 2/6] easysplash: Write LICENSE as an SPDX expression OE-Core now parses LICENSE as SPDX and warns on the legacy '|' operator. Tested with bitbake -p and easysplash do_populate_lic. Signed-off-by: Luciano Dittgen --- recipes-core/easysplash/easysplash_2.0.0.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes-core/easysplash/easysplash_2.0.0.bb b/recipes-core/easysplash/easysplash_2.0.0.bb index b891dc8..b634c08 100644 --- a/recipes-core/easysplash/easysplash_2.0.0.bb +++ b/recipes-core/easysplash/easysplash_2.0.0.bb @@ -9,7 +9,7 @@ HOMEPAGE = "https://github.com/OSSystems/EasySplash" BUGTRACKER = "https://github.com/OSSystems/EasySplash/issues" SECTION = "graphics" CVE_PRODUCT = "easysplash" -LICENSE = "Apache-2.0 | MIT" +LICENSE = "Apache-2.0 OR MIT" LIC_FILES_CHKSUM = "\ file://LICENSE-APACHE-2.0;md5=1836efb2eb779966696f473ee8540542 \ file://LICENSE-MIT;md5=b377b220f43d747efdec40d69fcaa69d \ From df4d0a90435cf450bc0ab8024361cbe6404ec5d4 Mon Sep 17 00:00:00 2001 From: Luciano Dittgen Date: Fri, 6 Nov 2026 15:54:36 -0300 Subject: [PATCH 3/6] easysplash-config: License as MIT instead of CLOSED LICENSE = "CLOSED" is deprecated. The recipe ships a config file from this layer, which is MIT licensed, so checksum the common MIT text instead of shipping a copy. Tested with do_populate_lic. Signed-off-by: Luciano Dittgen --- recipes-core/easysplash/easysplash-config_2.0.0.bb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/recipes-core/easysplash/easysplash-config_2.0.0.bb b/recipes-core/easysplash/easysplash-config_2.0.0.bb index 35c7340..4930dd8 100644 --- a/recipes-core/easysplash/easysplash-config_2.0.0.bb +++ b/recipes-core/easysplash/easysplash-config_2.0.0.bb @@ -4,7 +4,8 @@ HOMEPAGE = "https://github.com/OSSystems/EasySplash" BUGTRACKER = "https://github.com/OSSystems/EasySplash/issues" SECTION = "graphics" CVE_PRODUCT = "easysplash" -LICENSE = "CLOSED" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" SRC_URI += "file://easysplash.default" From 906deabbafacc33197c9c76c643d2fed74cc3aa2 Mon Sep 17 00:00:00 2001 From: Luciano Dittgen Date: Fri, 6 Nov 2026 15:54:36 -0300 Subject: [PATCH 4/6] weston-touch-calibrator-service: License as MIT instead of CLOSED LICENSE = "CLOSED" is deprecated. The recipe ships service, udev and config files from this layer, which is MIT licensed, so checksum the common MIT text instead of shipping a copy. Set S to UNPACKDIR, as the recipe has no source tree of its own. Tested with bitbake -p (oel skips the recipe: it needs wayland and pam). Signed-off-by: Luciano Dittgen --- .../weston-touch-calibrator-service_1.0.bb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/recipes-graphics/weston-touch-calibrator-service/weston-touch-calibrator-service_1.0.bb b/recipes-graphics/weston-touch-calibrator-service/weston-touch-calibrator-service_1.0.bb index 9f02ac1..4a8f00f 100644 --- a/recipes-graphics/weston-touch-calibrator-service/weston-touch-calibrator-service_1.0.bb +++ b/recipes-graphics/weston-touch-calibrator-service/weston-touch-calibrator-service_1.0.bb @@ -4,7 +4,8 @@ HOMEPAGE = "https://github.com/OSSystemsEmbeddedLinux/meta-ossystems-base" BUGTRACKER = "https://github.com/OSSystemsEmbeddedLinux/meta-ossystems-base/issues" SECTION = "graphics" CVE_PRODUCT = "weston-touch-calibrator-service" -LICENSE = "CLOSED" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" SRC_URI = "\ file://weston-touch-calibrator.default \ @@ -13,6 +14,8 @@ SRC_URI = "\ file://touchscreen.rules \ " +S = "${UNPACKDIR}" + inherit systemd features_check REQUIRED_DISTRO_FEATURES += "wayland pam" From bf25684aecae77c2e94ffdb484376e0b26e00ecc Mon Sep 17 00:00:00 2001 From: Luciano Dittgen Date: Fri, 6 Nov 2026 15:54:36 -0300 Subject: [PATCH 5/6] easysplash-animation-default: License as Apache-2.0 OR MIT LICENSE = "CLOSED" is deprecated. The animation is built from the EasySplash repository, which is dual licensed with no separate terms for its data. The commercial flag stays for gstreamer1.0-libav. Tested with do_populate_lic. Signed-off-by: Luciano Dittgen --- .../easysplash/easysplash-animation-default_2.0.0.bb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/recipes-core/easysplash/easysplash-animation-default_2.0.0.bb b/recipes-core/easysplash/easysplash-animation-default_2.0.0.bb index 2b2bbc0..9f9ce04 100644 --- a/recipes-core/easysplash/easysplash-animation-default_2.0.0.bb +++ b/recipes-core/easysplash/easysplash-animation-default_2.0.0.bb @@ -4,7 +4,11 @@ HOMEPAGE = "https://github.com/OSSystems/EasySplash" BUGTRACKER = "https://github.com/OSSystems/EasySplash/issues" SECTION = "graphics" CVE_PRODUCT = "easysplash" -LICENSE = "CLOSED" +LICENSE = "Apache-2.0 OR MIT" +LIC_FILES_CHKSUM = "\ + file://LICENSE-APACHE-2.0;md5=1836efb2eb779966696f473ee8540542 \ + file://LICENSE-MIT;md5=b377b220f43d747efdec40d69fcaa69d \ +" LICENSE_FLAGS = "commercial" LICENSE_FLAGS_DETAILS[commercial] = "Requires gstreamer1.0-libav, which is license-flagged commercial." From 2cf15f4eb12852db80e02b3c6f7ae7851303e375 Mon Sep 17 00:00:00 2001 From: Luciano Dittgen Date: Fri, 6 Nov 2026 15:54:36 -0300 Subject: [PATCH 6/6] easysplash-animation-ossystems: License as Apache-2.0 OR MIT LICENSE = "CLOSED" is deprecated. The animation is built from the EasySplash repository, which is dual licensed with no separate terms for its data. The commercial flag stays for gstreamer1.0-libav. Tested with do_populate_lic. Signed-off-by: Luciano Dittgen --- .../easysplash/easysplash-animation-ossystems_2.0.0.bb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/recipes-core/easysplash/easysplash-animation-ossystems_2.0.0.bb b/recipes-core/easysplash/easysplash-animation-ossystems_2.0.0.bb index 2a442cc..c9ff724 100644 --- a/recipes-core/easysplash/easysplash-animation-ossystems_2.0.0.bb +++ b/recipes-core/easysplash/easysplash-animation-ossystems_2.0.0.bb @@ -4,7 +4,11 @@ HOMEPAGE = "https://github.com/OSSystems/EasySplash" BUGTRACKER = "https://github.com/OSSystems/EasySplash/issues" SECTION = "graphics" CVE_PRODUCT = "easysplash" -LICENSE = "CLOSED" +LICENSE = "Apache-2.0 OR MIT" +LIC_FILES_CHKSUM = "\ + file://LICENSE-APACHE-2.0;md5=1836efb2eb779966696f473ee8540542 \ + file://LICENSE-MIT;md5=b377b220f43d747efdec40d69fcaa69d \ +" LICENSE_FLAGS = "commercial" LICENSE_FLAGS_DETAILS[commercial] = "Requires gstreamer1.0-libav, which is license-flagged commercial."