diff --git a/.oelint.cfg b/.oelint.cfg index 784f35b..d98ccae 100644 --- a/.oelint.cfg +++ b/.oelint.cfg @@ -8,5 +8,5 @@ # the finding, so new recipes are always fully linted and each exception is # documented in place. [oelint] -release = wrynose +release = blacksail suppress = oelint.var.bbclassextend diff --git a/classes/cve-filter.bbclass b/classes/cve-filter.bbclass index 4729950..aff2968 100644 --- a/classes/cve-filter.bbclass +++ b/classes/cve-filter.bbclass @@ -100,7 +100,8 @@ python do_cve_filter (){ do_cve_filter[doc] = "Compare the image CVE report against a previous version and emit a filtered Markdown summary of the new CVEs." addtask cve_filter after do_rootfs before do_image -ROOTFS_POSTPROCESS_COMMAND:prepend = "link_cvefilter_markdownfile; " +# nooelint: oelint.var.rootfspostcmd the trailing space keeps this prepend apart from the next function +ROOTFS_POSTPROCESS_COMMAND:prepend = "link_cvefilter_markdownfile " link_cvefilter_markdownfile[doc] = "Create a stable-named symlink to the CVE filter Markdown report in the deploy directory." link_cvefilter_markdownfile () { diff --git a/classes/deploy-license-manifest.bbclass b/classes/deploy-license-manifest.bbclass index a14c0f5..8d663d9 100644 --- a/classes/deploy-license-manifest.bbclass +++ b/classes/deploy-license-manifest.bbclass @@ -1,6 +1,6 @@ # nooelint: oelint.bbclass.underscores oelint.file.inlinesuppress_na no EXPORT_FUNCTIONS here, so the dash is harmless -ROOTFS_POSTPROCESS_COMMAND += "deploy_license_manifest;" -IMAGE_POSTPROCESS_COMMAND += "link_license_manifest;" +ROOTFS_POSTPROCESS_COMMAND += "deploy_license_manifest" +IMAGE_POSTPROCESS_COMMAND += "link_license_manifest" deploy_license_manifest[doc] = "Copy the image license manifest into the deploy directory and generate a CSV variant." deploy_license_manifest () { diff --git a/classes/image-license-checker.bbclass b/classes/image-license-checker.bbclass index 88bb92c..69e5ed3 100644 --- a/classes/image-license-checker.bbclass +++ b/classes/image-license-checker.bbclass @@ -135,7 +135,8 @@ python check_rootfs_licenses() { bb.fatal("Packages have denylisted licenses: {}".format(", ".join(bad_packages))) } check_rootfs_licenses[doc] = "Fail the build if any package installed on the rootfs has a denylisted license." -ROOTFS_POSTPROCESS_COMMAND:prepend = "check_rootfs_licenses; " +# nooelint: oelint.var.rootfspostcmd the trailing space keeps this prepend apart from the next function +ROOTFS_POSTPROCESS_COMMAND:prepend = "check_rootfs_licenses " python check_deploy_licenses() { """ @@ -154,4 +155,4 @@ python check_deploy_licenses() { bb.fatal("Deployed image dependencies have denylisted licenses: {}".format(", ".join(bad_recipes))) } check_deploy_licenses[doc] = "Fail the build if any recipe deploying files into the image has a denylisted license." -IMAGE_POSTPROCESS_COMMAND:prepend = "check_deploy_licenses; " +IMAGE_POSTPROCESS_COMMAND:prepend = "check_deploy_licenses " diff --git a/classes/ossystems-onsite-only-recipe-handler.bbclass b/classes/ossystems-onsite-only-recipe-handler.bbclass index 4de6603..cdcf825 100644 --- a/classes/ossystems-onsite-only-recipe-handler.bbclass +++ b/classes/ossystems-onsite-only-recipe-handler.bbclass @@ -28,20 +28,17 @@ def ossystems_onsite_only_recipe_handler(d): bb.note("O.S. Systems OnSite-Only Recipes handler: Disabled") - for recipe in onsite_only_recipes.split(): - d.setVar("SRCPV:pn-%s" % recipe, "OSSystemsOnSiteOnlyRecipeTag") - bb.debug(1, "O.S. Systems OnSite-Only Recipes handler: Overriding %s" % recipe) - def ossystems_onsite_only_recipe_check(d): recipes = d.getVar('OSSYSTEMS_ONSITE_ONLY_RECIPES', True) if not recipes: return + if d.getVar('OSSYSTEMS_USE_ONSITE_ONLY_RECIPES', True) == "1": + return + pn = d.getVar('PN', True) if pn in recipes.split(): - srcpv = d.getVar('SRCPV', True) - if srcpv == "OSSystemsOnSiteOnlyRecipeTag": - raise bb.parse.SkipPackage("O.S. Systems OnSite-Only Recipes handler: recipe skipped.") + raise bb.parse.SkipPackage("O.S. Systems OnSite-Only Recipes handler: recipe skipped.") addhandler ossystems_onsite_only_recipe_eventhandler ossystems_onsite_only_recipe_eventhandler[doc] = "Disable on-site-only recipes at ConfigParsed when building off-site." diff --git a/conf/distro/include/oel.inc b/conf/distro/include/oel.inc index 09c53f8..081bad5 100644 --- a/conf/distro/include/oel.inc +++ b/conf/distro/include/oel.inc @@ -1,4 +1,4 @@ -DISTRO_VERSION = "26.05-snapshot-${DATE}" +DISTRO_VERSION = "26.11-snapshot-${DATE}" SDK_VENDOR = "-oelsdk" SDK_VERSION := "${@'${DISTRO_VERSION}'.replace('snapshot-${DATE}','snapshot')}" @@ -37,7 +37,7 @@ INHERIT += "layerdirs" INHERIT += "typecheck" # Also check for host user contamination in the rootfs -ROOTFS_POSTPROCESS_COMMAND:append = " rootfs_check_host_user_contaminated;" +ROOTFS_POSTPROCESS_COMMAND:append = " rootfs_check_host_user_contaminated" SANITY_TESTED_DISTROS ?= " \ almalinux-8 \ @@ -71,6 +71,9 @@ OEL_DEFAULT_EXTRA_RDEPENDS = "packagegroup-core-boot" DISTRO_FEATURES ?= "${OEL_DEFAULT_DISTRO_FEATURES} \ ${OEL_EXTRA_DISTRO_FEATURES}" +# OE-Core requires distros to pick an init manager; oel uses systemd. +INIT_MANAGER ?= "systemd" + DISTRO_EXTRA_RDEPENDS += "${OEL_DEFAULT_EXTRA_RDEPENDS}" DISTRO_FEATURES_OPTED_OUT ?= " \ @@ -118,9 +121,6 @@ VOLATILE_BINDS:append = "\ # don't have pam available, as the user service won't be started systemd_userunitdir:pn-pulseaudio = "${@bb.utils.contains('DISTRO_FEATURES', 'pam', '${systemd_unitdir}/user', '${systemd_unitdir}/system', d)}" -# We prefer busybox rather than tinylogin -VIRTUAL-RUNTIME_login_manager ??= "busybox" - # Use systemd as syslog in distros that has systemd in DISTRO_FEATURES VIRTUAL-RUNTIME_base-utils-syslog = "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', 'busybox-syslog', d)}" @@ -162,28 +162,6 @@ SSTATE_MIRROR_SITES:prepend = "${LAYER_SSTATE_MIRRORS} " # Ensure that we implement shared state reuse handling for non-target recipes require conf/distro/include/sstate.inc -# This function changes the default tune for machines which are based on armv7a -# to use common tune value. -def arm_tune_handler(d): - features = d.getVar('TUNE_FEATURES', True).split() - if 'armv7a' in features or 'armv7ve' in features: - tune = 'armv7ahf' - if 'bigendian' in features: - tune += 'b' - if 'vfpv3' in features: - tune += '-vfpv3' - if 'vfpv3d16' in features: - tune += '-vfpv3d16' - if 'neon' in features: - tune += '-neon' - if 'vfpv4' in features: - tune += '-vfpv4' - else: - tune = d.getVar('DEFAULTTUNE', True) - return tune - -DEFAULTTUNE_oel := "${@arm_tune_handler(d)}" - DISTRO_ARM_INSTRUCTION ?= "arm" DISTRO_ARM_INSTRUCTION:armv4 ?= "arm" DISTRO_ARM_INSTRUCTION:armv5te ?= "arm" diff --git a/conf/distro/oel-tiny.conf b/conf/distro/oel-tiny.conf index b150284..96ae282 100644 --- a/conf/distro/oel-tiny.conf +++ b/conf/distro/oel-tiny.conf @@ -26,6 +26,10 @@ DISTRO = "oel-tiny" DISTRO_NAME = "O.S. Systems Embedded Linux Tiny" TCLIBC = "musl" + +# OE-Core defaults to systemd; tiny uses busybox and its own init. +INIT_MANAGER = "mdev-busybox" + DISTROOVERRIDES = "oel:oel-tiny" # Distro config is evaluated after the machine config, so we have to explicitly @@ -33,7 +37,8 @@ DISTROOVERRIDES = "oel:oel-tiny" PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto-tiny" PREFERRED_VERSION_linux-yocto-tiny ?= "6.18%" -OEL_DEFAULT_EXTRA_RRECOMMENDS = "" +# nss-myhostname needs glibc NSS; it is not buildable with musl. +DISTRO_EXTRA_RRECOMMENDS:remove = "nss-myhostname" # Disable wide char support for ncurses as we don't include it in # in the LIBC features below. @@ -43,13 +48,15 @@ ENABLE_WIDEC:class-native = "true" # Drop native language support to avoid pulling gettext and wide-char libc # features into the tiny image. -USE_NLS="no" +USE_NLS = "no" # DISTRO_FEATURES options: # alsa bluetooth ext2 irda pcmcia usbgadget usbhost wifi nfs zeroconf pci DISTRO_FEATURES_TINY = "pci" DISTRO_FEATURES_NET = "ipv4 ipv6" DISTRO_FEATURES_USB = "usbhost" +DISTRO_FEATURES_USBGADGET ?= "" +DISTRO_FEATURES_WIFI ?= "" #DISTRO_FEATURES_USBGADGET = "usbgadget" #DISTRO_FEATURES_WIFI = "wifi" diff --git a/conf/layer.conf b/conf/layer.conf index 37efb68..3053dc8 100644 --- a/conf/layer.conf +++ b/conf/layer.conf @@ -12,7 +12,7 @@ LAYERDEPENDS_ossystems-base = "core" addpylib ${LAYERDIR}/lib ossystems -LAYERSERIES_COMPAT_ossystems-base = "wrynose" +LAYERSERIES_COMPAT_ossystems-base = "blacksail" LICENSE_PATH += "${LAYERDIR}/conf/licenses" diff --git a/dynamic-layers/chromium-browser-layer/recipes-browser/chromium/chromium-ozone-wayland-init/chromium-ozone-wayland-init.initd b/dynamic-layers/chromium-browser-layer/recipes-browser/chromium/chromium-ozone-wayland-init/chromium-ozone-wayland-init.initd index bdd445a..d37031f 100644 --- a/dynamic-layers/chromium-browser-layer/recipes-browser/chromium/chromium-ozone-wayland-init/chromium-ozone-wayland-init.initd +++ b/dynamic-layers/chromium-browser-layer/recipes-browser/chromium/chromium-ozone-wayland-init/chromium-ozone-wayland-init.initd @@ -17,7 +17,7 @@ PATH=/sbin:/usr/sbin:/bin:/usr/bin DESC="chromium-browser" NAME="chromium-ozone-wayland" -DAEMON=/usr/bin/$NAME +DAEMON=/usr/bin/chromium CHROMIUM_ARGS="" PIDFILE=/var/run/$NAME.pid diff --git a/dynamic-layers/chromium-browser-layer/recipes-browser/chromium/chromium-ozone-wayland-init_1.0.bb b/dynamic-layers/chromium-browser-layer/recipes-browser/chromium/chromium-ozone-wayland-init_1.0.bb index a46cdb1..d9ea484 100644 --- a/dynamic-layers/chromium-browser-layer/recipes-browser/chromium/chromium-ozone-wayland-init_1.0.bb +++ b/dynamic-layers/chromium-browser-layer/recipes-browser/chromium/chromium-ozone-wayland-init_1.0.bb @@ -33,7 +33,7 @@ CHROMIUM_EXTRA_ARGS ?= "" SYSTEMD_SERVICE:${PN} = "chromium-ozone-wayland.service" # Start after weston-init -INITSCRIPT_NAME = "${BPM}" +INITSCRIPT_NAME = "chromium-ozone-wayland" INITSCRIPT_PARAMS = "start 10 5 2 . stop 19 0 1 6 ." do_configure[noexec] = "1" diff --git a/dynamic-layers/networking-layer/recipes-connectivity/networmanager/networkmanager_%.bbappend b/dynamic-layers/networking-layer/recipes-connectivity/networmanager/networkmanager_%.bbappend deleted file mode 100644 index 8fcaf31..0000000 --- a/dynamic-layers/networking-layer/recipes-connectivity/networmanager/networkmanager_%.bbappend +++ /dev/null @@ -1 +0,0 @@ -PACKAGECONFIG[ppp] = "-Dppp=true -Dpppd_plugin_dir='${libdir}/pppd/2.4.9' -Dpppd=${sbindir}/pppd,-Dppp=false,ppp,ppp" diff --git a/dynamic-layers/qt5-layer/recipes-qt/qt-kiosk-browser/files/qt-kiosk-browser-init.initd b/dynamic-layers/qt5-layer/recipes-qt/qt-kiosk-browser/files/qt-kiosk-browser-init.initd index ee415b8..aba5469 100644 --- a/dynamic-layers/qt5-layer/recipes-qt/qt-kiosk-browser/files/qt-kiosk-browser-init.initd +++ b/dynamic-layers/qt5-layer/recipes-qt/qt-kiosk-browser/files/qt-kiosk-browser-init.initd @@ -1,7 +1,7 @@ #!/bin/sh ### BEGIN INIT INFO -# Provides: $NAME +# Provides: qt-kiosk-browser # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 @@ -11,13 +11,20 @@ set -e DESC="Qt kiosk browser init" -NAME="qt-kiosk-browser-init" +NAME="qt-kiosk-browser" DAEMON=/usr/bin/$NAME DAEMON_ARGS="--platform wayland /etc/$NAME.conf --no-sandbox" PIDFILE=/var/run/$NAME.pid test -x ${DAEMON} || exit 0 +# Same environment as the systemd unit's EnvironmentFile +if [ -r /etc/default/$NAME ]; then + set -a + . /etc/default/$NAME + set +a +fi + umask 022 . /etc/init.d/functions diff --git a/dynamic-layers/qt5-layer/recipes-qt/qt-kiosk-browser/qt-kiosk-browser-init_1.0.bb b/dynamic-layers/qt5-layer/recipes-qt/qt-kiosk-browser/qt-kiosk-browser-init_1.0.bb index 813e76c..3303558 100644 --- a/dynamic-layers/qt5-layer/recipes-qt/qt-kiosk-browser/qt-kiosk-browser-init_1.0.bb +++ b/dynamic-layers/qt5-layer/recipes-qt/qt-kiosk-browser/qt-kiosk-browser-init_1.0.bb @@ -40,7 +40,7 @@ INITSCRIPT_NAME = "qt-kiosk-browser" do_install() { if ${@bb.utils.contains('DISTRO_FEATURES','sysvinit','true','false',d)}; then - install -Dm 0755 ${UNPACKDIR}/${PN}.initd ${D}${sysconfdir}/init.d/kiosk + install -Dm 0755 ${UNPACKDIR}/${PN}.initd ${D}${sysconfdir}/init.d/qt-kiosk-browser fi if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then install -Dm 0644 ${UNPACKDIR}/${PN}.service ${D}${systemd_system_unitdir}/qt-kiosk-browser.service diff --git a/dynamic-layers/webkit/recipes-browser/cog/cog/cog-init_1.0.bb b/dynamic-layers/webkit/recipes-browser/cog/cog-init_1.0.bb similarity index 100% rename from dynamic-layers/webkit/recipes-browser/cog/cog/cog-init_1.0.bb rename to dynamic-layers/webkit/recipes-browser/cog/cog-init_1.0.bb diff --git a/dynamic-layers/webkit/recipes-browser/cog/cog/files/COPYING.MIT b/dynamic-layers/webkit/recipes-browser/cog/files/COPYING.MIT similarity index 100% rename from dynamic-layers/webkit/recipes-browser/cog/cog/files/COPYING.MIT rename to dynamic-layers/webkit/recipes-browser/cog/files/COPYING.MIT diff --git a/dynamic-layers/webkit/recipes-browser/cog/cog/files/cog-init.default b/dynamic-layers/webkit/recipes-browser/cog/files/cog-init.default similarity index 100% rename from dynamic-layers/webkit/recipes-browser/cog/cog/files/cog-init.default rename to dynamic-layers/webkit/recipes-browser/cog/files/cog-init.default diff --git a/dynamic-layers/webkit/recipes-browser/cog/cog/files/cog-init.initd b/dynamic-layers/webkit/recipes-browser/cog/files/cog-init.initd similarity index 100% rename from dynamic-layers/webkit/recipes-browser/cog/cog/files/cog-init.initd rename to dynamic-layers/webkit/recipes-browser/cog/files/cog-init.initd diff --git a/dynamic-layers/webkit/recipes-browser/cog/cog/files/cog-init.service b/dynamic-layers/webkit/recipes-browser/cog/files/cog-init.service similarity index 100% rename from dynamic-layers/webkit/recipes-browser/cog/cog/files/cog-init.service rename to dynamic-layers/webkit/recipes-browser/cog/files/cog-init.service diff --git a/recipes-core/easysplash/easysplash-common-2.0.inc b/recipes-core/easysplash/easysplash-common-2.0.inc index 39bb6f8..7540737 100644 --- a/recipes-core/easysplash/easysplash-common-2.0.inc +++ b/recipes-core/easysplash/easysplash-common-2.0.inc @@ -3,6 +3,9 @@ PV = "2.0.0" SRC_URI = "git://github.com/OSSystems/EasySplash.git;branch=master;protocol=https" SRCREV = "81a44392efe15fd12ea673f1c828a52e95103eea" +# Upstream has no tag for 2.0.0, so the version check follows the branch head. +UPSTREAM_CHECK_COMMITS = "1" + EXTRA_OEMAKE += "\ prefix=${prefix} \ sysconfdir=${sysconfdir} \ diff --git a/recipes-core/easysplash/easysplash_2.0.0.bb b/recipes-core/easysplash/easysplash_2.0.0.bb index 2f5adf0..b891dc8 100644 --- a/recipes-core/easysplash/easysplash_2.0.0.bb +++ b/recipes-core/easysplash/easysplash_2.0.0.bb @@ -25,7 +25,7 @@ inherit cargo pkgconfig systemd update-rc.d cargo-update-recipe-crates # DEFAULT_PREFERENCE = "-1" CARGO_SRC_DIR = "" -PV .= "+git${SRCPV}" +PV .= "+git" INITSCRIPT_NAME = "${PN}-start" INITSCRIPT_PARAMS:${PN} = "start 5 S ." diff --git a/recipes-core/os-release/os-release.bbappend b/recipes-core/os-release/os-release.bbappend index d6d3463..88ec111 100644 --- a/recipes-core/os-release/os-release.bbappend +++ b/recipes-core/os-release/os-release.bbappend @@ -1,4 +1,5 @@ OS_RELEASE_FIELDS:append:oel = " BUILD_NUMBER" # Append build number for development builds -VERSION:append:oel = " ${@'(build %s)' % BUILD_NUMBER if 'BUILD_NUMBER' in d and DISTRO_VERSION.endswith('+devel') else ''}" +# nooelint: oelint.vars.inconspaces the separating space is only wanted with a build number +VERSION:append:oel = "${@' (build %s)' % BUILD_NUMBER if 'BUILD_NUMBER' in d and DISTRO_VERSION.endswith('+devel') else ''}"