From patchwork Wed Nov 4 09:32:12 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mathieu Dubois-Briand X-Patchwork-Id: 102875 Received: from smtpout-03.galae.net (smtpout-03.galae.net [185.246.85.4]) by mx.groups.io with SMTP id smtpd.msgproc01-g2.5540.1793784745787932965 for ; Wed, 04 Nov 2026 01:32:26 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@bootlin.com header.s=dkim header.b=BdZjt3HH; spf=pass (domain: bootlin.com, ip: 185.246.85.4, mailfrom: mathieu.dubois-briand@bootlin.com) Received: from smtpout-01.galae.net (smtpout-01.galae.net [212.83.139.233]) by smtpout-03.galae.net (Postfix) with ESMTPS id E9F094E413F6 for ; Wed, 4 Nov 2026 09:32:23 +0000 (UTC) Received: from mail.galae.net (mail.galae.net [212.83.136.155]) by smtpout-01.galae.net (Postfix) with ESMTPS id B7F5A60770 for ; Wed, 4 Nov 2026 09:32:23 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon) with ESMTPSA id 233A1103291FD; Wed, 4 Nov 2026 10:32:23 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=dkim; t=1793784743; h=from:subject:date:message-id:to:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:references; bh=WVLaWHrON22VTIEutqPKsB5i2Sq2wkN2+9h5IqeER3s=; b=BdZjt3HHo0QAKjCNj1OTP4a6hkfZ9jckCzfJZz3LCF315EwozmR53UPDvk2JTVMUjHtddW Ub1+eMtQEj21d9Fo0CkWac5xGSaT3qX7+7KRgp15lNQkAWVIeX65Vkf5plPXoNj3SH3I0W w8wberDbYfogRsBngpFRE7WZgXlrKVLxMVqEw/Jz9QOb3mYK5APOcYwWuFk4xt6XrHzLEW CGMV9Btut/bZ9OIQXLPyLwqNzyiWDlRnHdEVSzmVWj4vRvcxA3YgSykNPpA13eIKA8TZMM 8UfyKqC0NsKhnZ1dfAdyAuqVhnhYOEJc1tg6gwuQKoKxTG6TESKx+cB4zCqnQA== From: Mathieu Dubois-Briand Date: Wed, 04 Nov 2026 10:32:12 +0100 Subject: [PATCH yocto-autobuilder2 1/5] docker: Use https instead of git protocol MIME-Version: 1.0 Message-Id: <20261104-mathieu-release-selector-fix-v1-1-a245895c0093@bootlin.com> References: <20261104-mathieu-release-selector-fix-v1-0-a245895c0093@bootlin.com> In-Reply-To: <20261104-mathieu-release-selector-fix-v1-0-a245895c0093@bootlin.com> To: yocto-patches@lists.yoctoproject.org Cc: Thomas Petazzoni , Mathieu Dubois-Briand X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1793784741; l=894; i=mathieu.dubois-briand@bootlin.com; s=20241219; h=from:subject:message-id; bh=A3iZ/WYMtCz0eYEDevGJh1cWxscKDut86ZPS9vX3Vyw=; b=QfbcKzMe7ZNKdpULgJKLW96i0OcVvCDywqbhrdUwewyucWUizHtuBS0AX+c5gzkpNAoLP5Tio vmeUMDaqT1eApKhbJ6eWAci7qAYsnywgh9mpZMd0zoltuJeDNbRuCfn X-Developer-Key: i=mathieu.dubois-briand@bootlin.com; a=ed25519; pk=1PVTmzPXfKvDwcPUzG0aqdGoKZJA3b9s+3DqRlm0Lww= X-Last-TLS-Session-Version: TLSv1.3 List-Id: X-Webhook-Received: from 45-33-107-173.ip.linodeusercontent.com [45.33.107.173] by lin-tor-korg-lkml-alma10-1 with HTTPS for ; Wed, 04 Nov 2026 09:32:29 -0000 X-Groupsio-URL: https://lists.yoctoproject.org/g/yocto-patches/message/5226 Signed-off-by: Mathieu Dubois-Briand --- docker/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 793343a26017..361d409f990c 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -115,8 +115,8 @@ RUN sed -i \ -e '$ a workers_prev_releases = {}' \ /home/pokybuild/yocto-controller/yoctoabb/config.py && \ sed -i \ - # Use git protocol instead of ssh - -e "s#ssh://git@push\.\(yoctoproject.org\|openembedded.org\)/#git://git.\1/#" \ + # Use https instead of ssh + -e "s#ssh://git@push\.\(yoctoproject.org\|openembedded.org\)/#https://git.\1/#" \ /home/pokybuild/yocto-autobuilder-helper/config.json && \ sed -i \ # imp was removed in python 3.12, switch to importlib \ From patchwork Wed Nov 4 09:32:13 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mathieu Dubois-Briand X-Patchwork-Id: 102876 Received: from smtpout-03.galae.net (smtpout-03.galae.net [185.246.85.4]) by mx.groups.io with SMTP id smtpd.msgproc02-g2.5436.1793784746492448739 for ; Wed, 04 Nov 2026 01:32:27 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@bootlin.com header.s=dkim header.b=yQi5DPJ6; spf=pass (domain: bootlin.com, ip: 185.246.85.4, mailfrom: mathieu.dubois-briand@bootlin.com) Received: from smtpout-01.galae.net (smtpout-01.galae.net [212.83.139.233]) by smtpout-03.galae.net (Postfix) with ESMTPS id C80D84E413F7 for ; Wed, 4 Nov 2026 09:32:24 +0000 (UTC) Received: from mail.galae.net (mail.galae.net [212.83.136.155]) by smtpout-01.galae.net (Postfix) with ESMTPS id 96BB960770 for ; Wed, 4 Nov 2026 09:32:24 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon) with ESMTPSA id 9C3B810329218; Wed, 4 Nov 2026 10:32:23 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=dkim; t=1793784744; h=from:subject:date:message-id:to:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:references; bh=Iy+w7N6D8E9ApCZmXLJKcwon10RmIXJVyDZ9AziyyJE=; b=yQi5DPJ6Sl4vaIVuAOHyM6dmDdevWBJfEuVIQBPr8+nVhMEDNBvWHzMIrJHg67pMvOLYww GoOUbsmz+SkUEWYQWzc12SJglJrZy0qBQ9BlyAc3OnijpZSNYj1KwrdPwc/ciuwqHkFGpl 14e2F9OW11VNyWk2KUWUITpLPWLvS7RSMrfd8hdqvFNF8pViTArQP/FLs+Xrbs7U8Sk3mX 4bHyypBZzF78uN+9GiK+LORbG5KNdPBRmiiAI01Ukv63DLaQFxjZ5qtu+XZSEx8yCItIXT s1PYrl4KPYdw2814qPFIKb8jfsxmOVp7GMNGIFjhfC0sdc0MVt6v1P0eFG8L9g== From: Mathieu Dubois-Briand Date: Wed, 04 Nov 2026 10:32:13 +0100 Subject: [PATCH yocto-autobuilder2 2/5] docker: Refresh patches and fix configuration MIME-Version: 1.0 Message-Id: <20261104-mathieu-release-selector-fix-v1-2-a245895c0093@bootlin.com> References: <20261104-mathieu-release-selector-fix-v1-0-a245895c0093@bootlin.com> In-Reply-To: <20261104-mathieu-release-selector-fix-v1-0-a245895c0093@bootlin.com> To: yocto-patches@lists.yoctoproject.org Cc: Thomas Petazzoni , Mathieu Dubois-Briand X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1793784741; l=6610; i=mathieu.dubois-briand@bootlin.com; s=20241219; h=from:subject:message-id; bh=JvvMU0kOxKCPCKe2n8W6zBTzLzXwOAacmRYf5B7+DYM=; b=czPyel+QrUbeI9u2gqSdJMzWHqkWUoIvEoZ4J2LBQ+6QYhK6icvivsEqod+KrA7h9TVa1zaqe OV+5yVN6S4fDire8Trx9TmtaFECmHOYFSR4Lbt0doyKos+3haFzBkMw X-Developer-Key: i=mathieu.dubois-briand@bootlin.com; a=ed25519; pk=1PVTmzPXfKvDwcPUzG0aqdGoKZJA3b9s+3DqRlm0Lww= X-Last-TLS-Session-Version: TLSv1.3 List-Id: X-Webhook-Received: from 45-33-107-173.ip.linodeusercontent.com [45.33.107.173] by lin-tor-korg-lkml-alma10-1 with HTTPS for ; Wed, 04 Nov 2026 09:32:30 -0000 X-Groupsio-URL: https://lists.yoctoproject.org/g/yocto-patches/message/5227 Signed-off-by: Mathieu Dubois-Briand --- docker/Dockerfile | 4 ++-- docker/entry.sh | 1 + ...-builders-Do-not-create-tags-during-builds.patch | 10 +++++----- ...-Modify-free-space-check-to-work-in-docker.patch | 21 ++++++++++----------- 4 files changed, 18 insertions(+), 18 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 361d409f990c..0ddd20d52ac6 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -107,8 +107,8 @@ RUN sed -i \ # Add local workers \ -e "s/^\(workers_debian *=.*\).*/\1 + [f\"local-worker-debian\"]/" \ -e "s/^\(workers *=.*\).*/\1 + [f\"local-worker-extra-{i}\" for i in range(1, 9)]/" \ - # Remove workers_bringup from all_workers \ - -e "/^all_workers *=/s/workers_bringup + //" \ + # Empty workers_bringup variable \ + -e "s/^\(workers_bringup *=\).*/\1 []/" \ # Switch from ssh:// URLS to https:// so we do not need any auth \ -e "s#ssh://git@push\.\(yoctoproject.org\|openembedded.org\)/#https://git.\1/#" \ # Use any worker for any release \ diff --git a/docker/entry.sh b/docker/entry.sh index 125f447be4f2..aac1af9dc1da 100644 --- a/docker/entry.sh +++ b/docker/entry.sh @@ -2,6 +2,7 @@ chmod 666 /dev/kvm +mkdir -p /srv/autobuilder/repos /srv/autobuilder/autobuilder.yocto.io/pub chown pokybuild:nogroup /srv/autobuilder/repos chown pokybuild:nogroup /srv/autobuilder/autobuilder.yocto.io/pub chown pokybuild:nogroup /home/pokybuild/git/mirror diff --git a/docker/yocto-autobuilder2_patches/0001-builders-Do-not-create-tags-during-builds.patch b/docker/yocto-autobuilder2_patches/0001-builders-Do-not-create-tags-during-builds.patch index c1482f72c8e4..7549329ba68a 100644 --- a/docker/yocto-autobuilder2_patches/0001-builders-Do-not-create-tags-during-builds.patch +++ b/docker/yocto-autobuilder2_patches/0001-builders-Do-not-create-tags-during-builds.patch @@ -1,4 +1,4 @@ -From b6a31b0c63a7529961ea02c53f43b9edb110f4de Mon Sep 17 00:00:00 2001 +From 3bc68471778693c59a692a26d5ef5a9d9212d901 Mon Sep 17 00:00:00 2001 From: Mathieu Dubois-Briand Date: Fri, 3 Jan 2025 09:39:06 +0100 Subject: [PATCH 1/2] builders: Do not create tags during builds @@ -9,10 +9,10 @@ Signed-off-by: Mathieu Dubois-Briand 1 file changed, 13 deletions(-) diff --git a/builders.py b/builders.py -index b7379ece71f2..d87e41c9233e 100644 +index 2d42d07e3b9a..574a23cc86bd 100644 --- a/builders.py +++ b/builders.py -@@ -314,18 +314,9 @@ def create_parent_builder_factory(buildername, waitname): +@@ -337,18 +337,9 @@ def create_parent_builder_factory(buildername, waitname): util.Interpolate("%(prop:builddir)s/layerinfo.json"), util.Interpolate("{}/%(prop:buildername)s-%(prop:buildnumber)s".format(config.sharedrepodir)), "-p", get_publish_dest, @@ -31,7 +31,7 @@ index b7379ece71f2..d87e41c9233e 100644 factory.addStep(steps.SetProperty( property="sharedrepolocation", value=util.Interpolate("{}/%(prop:buildername)s-%(prop:buildnumber)s".format(config.sharedrepodir)) -@@ -374,7 +365,6 @@ def create_parent_builder_factory(buildername, waitname): +@@ -406,7 +397,6 @@ def create_parent_builder_factory(buildername, waitname): "rc_number": util.Property("rc_number"), "yp_build_revision": util.Property("yp_build_revision"), "yp_build_branch": util.Property("yp_build_branch"), @@ -39,7 +39,7 @@ index b7379ece71f2..d87e41c9233e 100644 } for repo in config.buildertorepos[buildername]: -@@ -385,9 +375,6 @@ def create_parent_builder_factory(buildername, waitname): +@@ -417,9 +407,6 @@ def create_parent_builder_factory(buildername, waitname): set_props["milestone_number"] = util.Property("milestone_number") set_props["rc_number"] = util.Property("rc_number") diff --git a/docker/yocto-autobuilder2_patches/0002-builders-Modify-free-space-check-to-work-in-docker.patch b/docker/yocto-autobuilder2_patches/0002-builders-Modify-free-space-check-to-work-in-docker.patch index 8c0ad1c93cbe..0ced8eaf7220 100644 --- a/docker/yocto-autobuilder2_patches/0002-builders-Modify-free-space-check-to-work-in-docker.patch +++ b/docker/yocto-autobuilder2_patches/0002-builders-Modify-free-space-check-to-work-in-docker.patch @@ -1,19 +1,18 @@ -From c6032ab33d39981eb9dede27d0bbd073a8d58389 Mon Sep 17 00:00:00 2001 +From d2ac1923753ea987117f89506790f749370f8a77 Mon Sep 17 00:00:00 2001 From: Mathieu Dubois-Briand Date: Wed, 20 Nov 2024 14:53:34 +0100 Subject: [PATCH 2/2] builders: Modify free space check to work in docker Signed-off-by: Mathieu Dubois-Briand --- - builders.py | 5 ++--- - 1 file changed, 2 insertions(+), 3 deletions(-) + builders.py | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/builders.py b/builders.py -index a16a857d9211..d5389283e605 100644 +index 574a23cc86bd..fb825bad72e7 100644 --- a/builders.py +++ b/builders.py -@@ -70,8 +70,7 @@ def canStartBuild(builder, wfb, request): - +@@ -73,7 +73,6 @@ def canStartBuild(builder, wfb, request): # threshold is GB of space checks = { - "." : (200, "HOME"), @@ -22,15 +21,15 @@ index a16a857d9211..d5389283e605 100644 } for mountpoint in checks: -@@ -79,7 +78,7 @@ def canStartBuild(builder, wfb, request): +@@ -81,7 +80,7 @@ def canStartBuild(builder, wfb, request): bytes_in_gb = 1024 * 1024 * 1024 -- cmd = yield shell("findmnt -T %s --df -n --bytes | awk '{print $5}'" % mountpoint, wfb.worker, builder) -+ cmd = yield shell("findmnt --all -T %s --df -n --bytes | awk '{print $5}'" % mountpoint, wfb.worker, builder) +- cmd = yield shell(["findmnt", "-T", mountpoint, "--df", "-n", "--bytes", ++ cmd = yield shell(["findmnt", "--all", "-T", mountpoint, "--df", "-n", "--bytes", + "-o", "AVAIL"], + wfb.worker, builder) space = int(cmd.stdout.strip()) - if space < threshold * bytes_in_gb: - log.msg("Detected {0} GB of space available on {1}, less than threshold of {2} GB. Can't start build".format(space / bytes_in_gb, name, threshold)) -- 2.47.3 From patchwork Wed Nov 4 09:32:14 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mathieu Dubois-Briand X-Patchwork-Id: 102877 Received: from smtpout-03.galae.net (smtpout-03.galae.net [185.246.85.4]) by mx.groups.io with SMTP id smtpd.msgproc01-g2.5541.1793784747200764295 for ; Wed, 04 Nov 2026 01:32:27 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@bootlin.com header.s=dkim header.b=neyQk6QU; spf=pass (domain: bootlin.com, ip: 185.246.85.4, mailfrom: mathieu.dubois-briand@bootlin.com) Received: from smtpout-01.galae.net (smtpout-01.galae.net [212.83.139.233]) by smtpout-03.galae.net (Postfix) with ESMTPS id 66D0F4E413F8 for ; Wed, 4 Nov 2026 09:32:25 +0000 (UTC) Received: from mail.galae.net (mail.galae.net [212.83.136.155]) by smtpout-01.galae.net (Postfix) with ESMTPS id 3511F60770 for ; Wed, 4 Nov 2026 09:32:25 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon) with ESMTPSA id 7554010329217; Wed, 4 Nov 2026 10:32:24 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=dkim; t=1793784744; h=from:subject:date:message-id:to:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:references; bh=UUKqiOwV4/tl5UiALlC3/4YlQ9fBlZh2UWjGSLNEnCI=; b=neyQk6QU6TbDTWAE+u3G9/1VxlnLsU3f+8tRCx8GsI5/ILQJi4epsvyHR4aDwwJC6SCYKU bJQZaSOgAT7UPzHwRpvS8+MrO46B7GmdYHFIe/rhsNlswGFROPUOjpbPl9hi57cGhTXKtq p/qj2qkTYmj0oQ+OXHqqdcnOoOLrnwcTEkM/HoST4g8yr9YLqzU1BTMHdCmovET4Jbq3Jk BqWSEHiEH8mGN83O5BBrE9ioJALE7dN7xvrCd5uFgoTUD4WidYAeMBzp7myrTfAe90x3D3 BkVQkqeDoA8uYW9Utrxd23SiZBWEuogTUD2cSfz9ojnHjBVQVNbdfaEKxePbDg== From: Mathieu Dubois-Briand Date: Wed, 04 Nov 2026 10:32:14 +0100 Subject: [PATCH yocto-autobuilder2 3/5] releaseselector: Fix release selector not applied on keyboard use MIME-Version: 1.0 Message-Id: <20261104-mathieu-release-selector-fix-v1-3-a245895c0093@bootlin.com> References: <20261104-mathieu-release-selector-fix-v1-0-a245895c0093@bootlin.com> In-Reply-To: <20261104-mathieu-release-selector-fix-v1-0-a245895c0093@bootlin.com> To: yocto-patches@lists.yoctoproject.org Cc: Thomas Petazzoni , Mathieu Dubois-Briand X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1793784741; l=4412; i=mathieu.dubois-briand@bootlin.com; s=20241219; h=from:subject:message-id; bh=Go/K+V96Inaf8AIxcQWmNiUdvMghPyXGul3dDe8RPO4=; b=KLjU3XQXGADe4VI4ao0LrhOy1uoXBHml3jl+Byy5YjFPZPEPJaflHO2HTyRo0MIYyG5bd567I 3301pfuhfyXAcPeA21R3S6nczmKWk7K33QGvxf+bVSb+ov68TT1KqEg X-Developer-Key: i=mathieu.dubois-briand@bootlin.com; a=ed25519; pk=1PVTmzPXfKvDwcPUzG0aqdGoKZJA3b9s+3DqRlm0Lww= X-Last-TLS-Session-Version: TLSv1.3 List-Id: X-Webhook-Received: from 45-33-107-173.ip.linodeusercontent.com [45.33.107.173] by lin-tor-korg-lkml-alma10-1 with HTTPS for ; Wed, 04 Nov 2026 09:32:31 -0000 X-Groupsio-URL: https://lists.yoctoproject.org/g/yocto-patches/message/5228 When a release shortcut was picked with the keyboard, the fields it maps to were not applied. Additionally, pressing return could raise a JS exception. Now the configuration is captured in a selectors map when the menu opens, and reused later. Also, return key only applies the selected entry when the focus is in the release selector field. [YOCTO #16291] AI-Generated: Uses opencode (DeepSeek V4 Flash) Signed-off-by: Mathieu Dubois-Briand --- yocto_console_view/src/releaseselectorfield.ts | 60 +++++++++++++++----------- 1 file changed, 35 insertions(+), 25 deletions(-) diff --git a/yocto_console_view/src/releaseselectorfield.ts b/yocto_console_view/src/releaseselectorfield.ts index db707ef09174..1d82310da261 100644 --- a/yocto_console_view/src/releaseselectorfield.ts +++ b/yocto_console_view/src/releaseselectorfield.ts @@ -3,6 +3,14 @@ buildbotSetupPlugin((reg) => { let selectInputName = null; let selectListName = null; let inputRefs = null; + let selectors = new Map(); + let lastName = null; + + function selectedName() { + const input = document.getElementById(selectInputName); + const label = input && input.parentElement.previousElementSibling; + return label ? label.textContent.split(':')[0] : null; + } const onTransitionEndEvent = (event) => { /* @@ -54,6 +62,7 @@ buildbotSetupPlugin((reg) => { selectInputName = releaseSelector.attributes.getNamedItem('id').value; const selectName = selectInputName.substring(0, selectInputName.lastIndexOf('-')); selectListName = selectName + '-listbox'; + lastName = selectedName(); } window.addEventListener('transitionend', onTransitionEndEvent); @@ -61,13 +70,13 @@ buildbotSetupPlugin((reg) => { if (selectListName) { const listDiv = document.getElementById(selectListName); if (listDiv) { - /* - * The ReleaseSelector menu is shown: clean menu items. - */ - listDiv.childNodes.forEach(div => { const sepIdx = div.textContent.indexOf(':'); if (sepIdx >= 0) { + try { + selectors.set(div.textContent.substring(0, sepIdx), + JSON.parse(div.textContent.substring(sepIdx + 1))); + } catch (e) {} div.textContent = div.textContent.substring(0, sepIdx); } }); @@ -75,21 +84,11 @@ buildbotSetupPlugin((reg) => { } } - function findApplySelector() { - /* - * One entry was clicked in the ReleaseSelector - * menu: update all fields described by the - * selector configuration. - */ - const branchInput = document.getElementById(selectInputName); - const inputText = branchInput.parentElement.previousElementSibling.textContent; - const sepIdx = inputText.indexOf(':'); - const selectorName = inputText.substring(0, sepIdx); - const selector = inputText.substring(sepIdx + 1); - - new Promise((resolve, reject) => { - return applySelector(JSON.parse(selector), selectorName).then(resolve); - }); + function applySelectorByName(name) { + const selector = selectors.get(name); + if (selector) { + applySelector(selector, name).catch(e => console.error(e)); + } } const onClick = (event) => { @@ -98,18 +97,29 @@ buildbotSetupPlugin((reg) => { if (event.target.parentElement) { const parentId = event.target.parentElement.attributes.getNamedItem('id'); if (parentId && parentId.value == selectListName) { - findApplySelector(); + lastName = event.target.textContent.split(':')[0]; + applySelectorByName(lastName); } } } window.addEventListener('click', onClick); const onKeyDown = (event) => { - if (event.key == "Enter") { - findApplySelector(); - } else { - updateSelectors(); - } + const branchInput = document.getElementById(selectInputName); + if (!branchInput || !branchInput.contains(event.target) || event.key != "Enter") + return; + /* + * The combobox commits the selection when Enter is pressed. Read the + * displayed label once the new value has been rendered (deferred), and + * apply the shortcut only if it actually changed. + */ + setTimeout(() => { + const name = selectedName(); + if (name && name != lastName) { + lastName = name; + applySelectorByName(name); + } + }, 0); } window.addEventListener('keydown', onKeyDown); From patchwork Wed Nov 4 09:32:15 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mathieu Dubois-Briand X-Patchwork-Id: 102878 Received: from smtpout-03.galae.net (smtpout-03.galae.net [185.246.85.4]) by mx.groups.io with SMTP id smtpd.msgproc01-g2.5542.1793784747892811936 for ; Wed, 04 Nov 2026 01:32:28 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@bootlin.com header.s=dkim header.b=sdY5J2Uu; spf=pass (domain: bootlin.com, ip: 185.246.85.4, mailfrom: mathieu.dubois-briand@bootlin.com) Received: from smtpout-01.galae.net (smtpout-01.galae.net [212.83.139.233]) by smtpout-03.galae.net (Postfix) with ESMTPS id 36F614E413F9 for ; Wed, 4 Nov 2026 09:32:26 +0000 (UTC) Received: from mail.galae.net (mail.galae.net [212.83.136.155]) by smtpout-01.galae.net (Postfix) with ESMTPS id 063CF60770 for ; Wed, 4 Nov 2026 09:32:26 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon) with ESMTPSA id 16EBF103291FC; Wed, 4 Nov 2026 10:32:25 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=dkim; t=1793784745; h=from:subject:date:message-id:to:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:references; bh=IpZqNhtBALnNGTjI/c1EKaHLXSiFxKsryIlcYl/UPmk=; b=sdY5J2Uun7po4vrmKTXXiGX7x/7lJS7SyfueBZqh5mB/Xhz5c8t5cY6NbQhWF+ltRQX/8L TTMWHCbsvPtGg098VHAg5PWCUpFmvMMqYkqyDxSpKIbS+ugi4Hdq/xasLDoYhgznb4WmN9 HVloB1io6F/E25wEFRlj419UT+O7uBzE35mxSCLQCVMTYofVwp8+ShuWwW2QFUAEQqk0c1 iFvm/fNOydTi5ag6WT0qPcBgHsckeHJt9Xvr4x3bQtuZegMkAtvEIYd65LP4/HoxihudLL 770BiFssMrKJX9N/p6XHt/gUZe3FtXgeWrN4L+ojiWsovoRUu+Y/GnWxzkiUpg== From: Mathieu Dubois-Briand Date: Wed, 04 Nov 2026 10:32:15 +0100 Subject: [PATCH yocto-autobuilder2 4/5] releaseselector: Fix checkbox filling MIME-Version: 1.0 Message-Id: <20261104-mathieu-release-selector-fix-v1-4-a245895c0093@bootlin.com> References: <20261104-mathieu-release-selector-fix-v1-0-a245895c0093@bootlin.com> In-Reply-To: <20261104-mathieu-release-selector-fix-v1-0-a245895c0093@bootlin.com> To: yocto-patches@lists.yoctoproject.org Cc: Thomas Petazzoni , Mathieu Dubois-Briand X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1793784741; l=1052; i=mathieu.dubois-briand@bootlin.com; s=20241219; h=from:subject:message-id; bh=mRCVCNPjFed7FTebkmysvlRyyWZDLfcuuiJTtDabI4o=; b=qCFqr1ctiwebLrieYz21NnbzimCiDJ3dgc0KP5wEjBPmLhB2Z9XOzDmQxT24dYrj98PlfpbwH duBLsPivz8yBKIE37VX8M6IxBbDX6skVBhVrybo0Iu7Y8ZzPNYEeHI6 X-Developer-Key: i=mathieu.dubois-briand@bootlin.com; a=ed25519; pk=1PVTmzPXfKvDwcPUzG0aqdGoKZJA3b9s+3DqRlm0Lww= X-Last-TLS-Session-Version: TLSv1.3 List-Id: X-Webhook-Received: from 45-33-107-173.ip.linodeusercontent.com [45.33.107.173] by lin-tor-korg-lkml-alma10-1 with HTTPS for ; Wed, 04 Nov 2026 09:32:31 -0000 X-Groupsio-URL: https://lists.yoctoproject.org/g/yocto-patches/message/5229 Set element.checked for checkboxes and dispatch a change event so the form picks the new value. [YOCTO #16291] AI-Generated: Uses opencode (DeepSeek V4 Flash) Signed-off-by: Mathieu Dubois-Briand --- yocto_console_view/src/releaseselectorfield.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/yocto_console_view/src/releaseselectorfield.ts b/yocto_console_view/src/releaseselectorfield.ts index 1d82310da261..1c4d289af224 100644 --- a/yocto_console_view/src/releaseselectorfield.ts +++ b/yocto_console_view/src/releaseselectorfield.ts @@ -182,6 +182,11 @@ buildbotSetupPlugin((reg) => { const UIValue = Symbol('Displayed value in UI'); async function setFieldValue(element, value) { element.focus(); + if (element.type == 'checkbox') { + element.checked = !!value; + element.dispatchEvent(new Event('change', {bubbles: true})); + return; + } element[UIValue] = value; element.value = Object.assign(new String(value), { [UIValue]: true From patchwork Wed Nov 4 09:32:16 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mathieu Dubois-Briand X-Patchwork-Id: 102879 Received: from smtpout-03.galae.net (smtpout-03.galae.net [185.246.85.4]) by mx.groups.io with SMTP id smtpd.msgproc02-g2.5438.1793784748507807221 for ; Wed, 04 Nov 2026 01:32:28 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@bootlin.com header.s=dkim header.b=PbmTuwxp; spf=pass (domain: bootlin.com, ip: 185.246.85.4, mailfrom: mathieu.dubois-briand@bootlin.com) Received: from smtpout-01.galae.net (smtpout-01.galae.net [212.83.139.233]) by smtpout-03.galae.net (Postfix) with ESMTPS id C84F44E413F5 for ; Wed, 4 Nov 2026 09:32:26 +0000 (UTC) Received: from mail.galae.net (mail.galae.net [212.83.136.155]) by smtpout-01.galae.net (Postfix) with ESMTPS id 96B6060770 for ; Wed, 4 Nov 2026 09:32:26 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon) with ESMTPSA id D7B3E1032920A; Wed, 4 Nov 2026 10:32:25 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=dkim; t=1793784746; h=from:subject:date:message-id:to:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:references; bh=hTVDs370tAI1T343yiF6KUu5UpNR+qC8Gyd4dznS5Uc=; b=PbmTuwxpSRWkFAxdaU47tKRqv6q7ktqaP2ius3ZH1Z0ZenMpsKIVtmCiTlwHUaS+/Z+TW2 aVkLrSPXduExXdFnN7/ThaPj+2SvqD6bIj+tSgFZZ/Jim4dK25YiJTVLqd1DoqqKPRah6X EWcuO838e6mARGSnOxZesK+o7FN9gaBMl7zcyY0VKiwLeJFn6WcC8VG5VlmJ8aH6avyCmq MpibrjqgJSNLt+HXpuhHGm7VSJvPlMXUdPDEKcx4ymUJV79fZIhY7EG0nXoe93Y/0hq+zs 3wYvyTbW+OICjCfATWKXT/OMfik8JoVLKvNlDQqAhWZ3sj7pAK98Odwv1fduaQ== From: Mathieu Dubois-Briand Date: Wed, 04 Nov 2026 10:32:16 +0100 Subject: [PATCH yocto-autobuilder2 5/5] releaseselector: Read release shortcuts from the force scheduler spec MIME-Version: 1.0 Message-Id: <20261104-mathieu-release-selector-fix-v1-5-a245895c0093@bootlin.com> References: <20261104-mathieu-release-selector-fix-v1-0-a245895c0093@bootlin.com> In-Reply-To: <20261104-mathieu-release-selector-fix-v1-0-a245895c0093@bootlin.com> To: yocto-patches@lists.yoctoproject.org Cc: Thomas Petazzoni , Mathieu Dubois-Briand X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1793784741; l=4808; i=mathieu.dubois-briand@bootlin.com; s=20241219; h=from:subject:message-id; bh=gmCETQ/WrujWY09X2kfT4jscItgav4BmbXISEzix7qw=; b=YsfZbqGsekiKgHVYEX4C1QoDvEES0y6M+mnb+/4IrkiaKBuO+DTVuFoXD0BLLkHnGRfivSK/1 Xf9yiqZyO8LCEWCvPZ68TBFsO8x+Ip8gsoberEBQZECr6wP6LrZ45jR X-Developer-Key: i=mathieu.dubois-briand@bootlin.com; a=ed25519; pk=1PVTmzPXfKvDwcPUzG0aqdGoKZJA3b9s+3DqRlm0Lww= X-Last-TLS-Session-Version: TLSv1.3 List-Id: X-Webhook-Received: from 45-33-107-173.ip.linodeusercontent.com [45.33.107.173] by lin-tor-korg-lkml-alma10-1 with HTTPS for ; Wed, 04 Nov 2026 09:32:31 -0000 X-Groupsio-URL: https://lists.yoctoproject.org/g/yocto-patches/message/5230 The release selector configuration was encoded in the choice strings and decoded in the browser. Instead, use field spec attribute to retrieve them. AI-Generated: Uses opencode (DeepSeek V4 Flash) Signed-off-by: Mathieu Dubois-Briand --- yocto_console_view/src/releaseselectorfield.ts | 52 ++++++++++------------- yocto_console_view/yocto_console_view/__init__.py | 9 +--- 2 files changed, 23 insertions(+), 38 deletions(-) diff --git a/yocto_console_view/src/releaseselectorfield.ts b/yocto_console_view/src/releaseselectorfield.ts index 1c4d289af224..c5c681a51e29 100644 --- a/yocto_console_view/src/releaseselectorfield.ts +++ b/yocto_console_view/src/releaseselectorfield.ts @@ -1,5 +1,5 @@ import {buildbotSetupPlugin} from "buildbot-plugin-support"; -buildbotSetupPlugin((reg) => { +buildbotSetupPlugin((reg, config) => { let selectInputName = null; let selectListName = null; let inputRefs = null; @@ -12,6 +12,26 @@ buildbotSetupPlugin((reg) => { return label ? label.textContent.split(':')[0] : null; } + async function loadSelectors() { + try { + const res = await fetch(config.buildbotURL + 'api/v2/forceschedulers', { + headers: {accept: 'application/json'} + }); + const data = await res.json(); + for (const sched of data.forceschedulers ?? []) { + for (const field of sched.all_fields) { + if (field.selectors) { + selectors = new Map(Object.entries(field.selectors)); + return; + } + } + } + } catch (e) { + console.error('releaseselector: failed to load release shortcuts:', e); + } + } + loadSelectors(); + const onTransitionEndEvent = (event) => { /* * We are looking for the transition showing the "forcebuild" dialog. @@ -46,19 +66,11 @@ buildbotSetupPlugin((reg) => { prepareInterceptor(input); }); - /* - * Only show the pretty name in the release selector field. - */ - const releaseSelector = inputRefs.get('force-field-branchselector'); - const releaseSelectorLabel = releaseSelector.parentNode.previousSibling; - const sepIdx = releaseSelectorLabel.textContent.indexOf(':'); - if (sepIdx >= 0) { - releaseSelectorLabel.textContent = releaseSelectorLabel.textContent.substring(0, sepIdx); - } /* * Get the name of the ReleaseSelector field div. */ + const releaseSelector = inputRefs.get('force-field-branchselector'); selectInputName = releaseSelector.attributes.getNamedItem('id').value; const selectName = selectInputName.substring(0, selectInputName.lastIndexOf('-')); selectListName = selectName + '-listbox'; @@ -66,24 +78,6 @@ buildbotSetupPlugin((reg) => { } window.addEventListener('transitionend', onTransitionEndEvent); - function updateSelectors() { - if (selectListName) { - const listDiv = document.getElementById(selectListName); - if (listDiv) { - listDiv.childNodes.forEach(div => { - const sepIdx = div.textContent.indexOf(':'); - if (sepIdx >= 0) { - try { - selectors.set(div.textContent.substring(0, sepIdx), - JSON.parse(div.textContent.substring(sepIdx + 1))); - } catch (e) {} - div.textContent = div.textContent.substring(0, sepIdx); - } - }); - } - } - } - function applySelectorByName(name) { const selector = selectors.get(name); if (selector) { @@ -92,8 +86,6 @@ buildbotSetupPlugin((reg) => { } const onClick = (event) => { - updateSelectors(); - if (event.target.parentElement) { const parentId = event.target.parentElement.attributes.getNamedItem('id'); if (parentId && parentId.value == selectListName) { diff --git a/yocto_console_view/yocto_console_view/__init__.py b/yocto_console_view/yocto_console_view/__init__.py index 6118ac29409b..eedf6958cfe9 100644 --- a/yocto_console_view/yocto_console_view/__init__.py +++ b/yocto_console_view/yocto_console_view/__init__.py @@ -16,8 +16,6 @@ from buildbot.www.plugin import Application from buildbot.schedulers.forcesched import ChoiceStringParameter -import json - # create the interface for the setuptools entry point ep = Application(__package__, "Yocto Buildbot Console View plugin") @@ -27,10 +25,5 @@ class ReleaseSelector(ChoiceStringParameter): selectors = None def __init__(self, name, selectors, **kw): - def format_choice(choice): - return choice + ': ' + json.dumps(selectors.get(choice, {})) - super().__init__(name, **kw) - self.choices = [format_choice(choice) - for choice in kw.get('choices', {})] - self.__dict__['default'] = format_choice(self.__dict__['default']) + self.selectors = selectors