Commit Graph

66056 Commits

Author SHA1 Message Date
Volodymyr Pavlenko
6753f152bc profiles: prpl: prplMesh: bump to master-2026-08-29
Some checks failed
Coverity scan build / Coverity x86/64 build (push) Has been cancelled
Integrates following changes:
- CI: bump prplOS to latest-24.10 2026-08-26 (03d8d7192)
- ci: host tool: pkg-config (046de1c7f)
- controller: clear old CAC status reports (2372924a6)
- agent: report capabilities for MLD clients (bbec544de)
- agent: fronthaul: monitor: fix ARP socket wrapper leak (96a762244)
- ci: build: use github.com package feed mirrors (1878217dd)
- hal: whm: migrate to KeyPassphraseVisible (e75041ecb)

References:  PPM-4219, PPM-4210, PPM-4203, PPM-4218, PPW-891
Signed-off-by: Volodymyr Pavlenko <pavlenko.vv@pm.me>
2026-08-29 14:23:05 +03:00
prplbot
50317acfc7 profiles: feed_prplmesh: pwhm: bump to dev-PPW-1799
Integrates following changes:
pwhm:
- 7203ea733: ("ci: baf: update autogenerated files", 2026-07-24)
- 61e7f3be4: ("pwhm: AccessPoint/Endpoint: rename Security param "KeyPassPhrase" to TR-181 standard 'KeyPassphrase'", 2026-07-21)
- 131055a50: ("pwhm: AccessPoint/Endpoint: add KeyPassphraseVisible and SAEPassphraseVisible parameters", 2026-06-03)
prplmesh-dm-mapper:
- 14a466d: ("odl: add getApplicableBandwidthPerChannel()", 2026-08-11)
prplMesh:
- 1a02fd656: ("hal: whm: migrate to KeyPassphraseVisible", 2026-07-17)

References: PPW-891
Signed-off-by: prplbot <bot@prplfoundation.org>
Signed-off-by: Maarten De Decker <maarten.dedecker@mind.be>
Signed-off-by: Igor Plesser <i.plesser@inango-systems.com>
Signed-off-by: Houssem Dafdouf <houssem.dafdouf_ext@softathome.com>
Signed-off-by: Hela Saadani <hela.saadani_ext@softathome.com>
2026-08-28 16:46:08 +01:00
Houssem Dafdouf
78ace27319 ci: cram: wifi: add power save test
Add a CRAM test covering FEAT-105. The test consists of:
- Enable all vaps
- Enable power save on 2.4.GHz radio
- Check the behavior of radio and vaps

References: FEAT-105,PPM-3928
Signed-off-by: Houssem Dafdouf <houssem.dafdouf_ext@softathome.com>
2026-08-28 12:57:56 +01:00
Houssem Dafdouf
c1ba5ad88c ci: cram: wifi: freedom: 100-pwhm_step_2.t: restore prplmesh resume
Restore the unintentionally removed prplmesh resume step that was
pushed during FEAT-389 integration.

References: FEAT-105,PPM-3928
Signed-off-by: Houssem Dafdouf <houssem.dafdouf_ext@softathome.com>
2026-08-28 12:57:56 +01:00
Houssem Dafdouf
36a48ba4c0 ci: cram: 105-pwhm-wpa3-cm.t: add missing BHs MLDUnit restore
Restore the MLDUnit relative to BH interfaces to ensure the test
environment is properly cleaned up after execution.

Not restoring the BHs MLDUnit may affect the behavior of the following
tests.

References: PPM-3928
Signed-off-by: Houssem Dafdouf <houssem.dafdouf_ext@softathome.com>
2026-08-28 12:57:56 +01:00
FAOUZI YAHYA
30d3c7e0d4 ci: cram: obuspa.expected: add Device.WiFi.Radio.{i}.SetRadioPowerDown
Integrates:
- add Device.WiFi.Radio.{i}.X_PRPLWARE-COM_RadioPowerSave.SetRadioPowerDown
- add Device.WiFi.Radio.{i}.X_PRPLWARE-COM_RadioPowerSave.RadioPowerSave DM

References: FEAT-105,PPM-3928
Signed-off-by: FAOUZI YAHYA <faouzi.yahya_ext@softathome.com>
Signed-off-by: Houssem Dafdouf <houssem.dafdouf_ext@softathome.com>
2026-08-28 12:57:56 +01:00
prplbot
5071101456 profiles: feed_prplmesh.yml: feed_prplmesh: Radio Off Power Save RPC and add mapping for SetRadioPowerDown()
Integrates following changes:
- pwhm: Radio Off Power Save RPC (90f384b6)
- 73a00c8a: ("dm-mapper: add mapping for SetRadioPowerDown()", 2026-08-05)

References: PPM-3928, FEAT-105
Signed-off-by: prplbot <bot@prplfoundation.org>
Signed-off-by: FAOUZI YAHYA <faouzi.yahya_ext@softathome.com>
2026-08-28 12:54:42 +01:00
prplbot
d31e9fe2df profiles: feed_prplos.yml: feed_prplos: move PCM import logs to /data and add PCM import log rotation
Integrates following changes:
- odl: add PCM import log rotation (2f2b0f76)
- odl: pcm: move PCM import logs to /data (7c7b6e7a)

References: PPW-2152
Signed-off-by: prplbot <bot@prplfoundation.org>
Signed-off-by: FAOUZI YAHYA <faouzi.yahya_ext@softathome.com>
2026-08-28 11:48:14 +01:00
prplbot
e0fa82980c profiles: feed_prplmesh: pwhm: hostapd: disable backslash escaping when writing config
Integrates following changes:
- pwhm: hostapd: disable backslash escaping when writing config (a7808cca)

References: PPW-1971
Signed-off-by: prplbot <bot@prplfoundation.org>
Signed-off-by: Hela Saadani <hela.saadani_ext@softathome.com>
2026-08-28 09:14:41 +01:00
FAOUZI YAHYA
a29e3d0157 ci: cram: obuspa.expected: update configure Device.SoftwareModules
Integrates:
- update Device.SoftwareModules, Device.SoftwareModules.ExecutionUnit and Device.SoftwareModules.InstallDU()

References: PCF-2687
Signed-off-by: FAOUZI YAHYA <faouzi.yahya_ext@softathome.com>
2026-08-27 13:44:34 +01:00
Nabil BIZID
01de24d614 profiles: feed_prplos.yml: feed-prplos: lxc: allow unprivileged containers to inherit host capabilities
Integrates:
- 69fc431d: ("lxc: allow unprivileged containers to inherit host capabilities", 2026-07-24)

References: PCF-2687, PCF-2751
Signed-off-by: Nabil BIZID <nabil.bizid@softathome.com>
Signed-off-by: FAOUZI YAHYA <faouzi.yahya_ext@softathome.com>
2026-08-27 13:43:59 +01:00
Nabil BIZID
9474ce9b8c profiles: lcm.yml: feed_lcm: Container capabilities: Using non-root user
Integrates:
cthulhu-pcm
- ddb16e4: ("cthulhu-pcm: add upgrade persistence for EnableHostCapabilities", 2026-08-06)
cthulhu-capabilities
- 8defb8d: ("ci: doc: enable Doxygen documentation for static functions", 2026-08-13)
- eaf3f36: ("ci: baf: update autogenerated files", 2026-07-30)
- f7cc593: ("cthulhu-capabilities: add configurable BlackList for Linux capabilities", 2026-07-08)
timingila-cthulhu
- d2e98b5: ("ci: doc: enable Doxygen for static functions", 2026-08-14)
- 77f16b0: ("timingila-cthulhu: sync Privileged/EnableHostCapabilities parameters", 2026-06-26)
cthulhu-lxc
- 3c67bad: ("ci: doc: add Doxygen configuration and documentation generation", 2026-08-14)
- 6233055: ("cthulhu-lxc: add support for capabilities inheritance in unprivileged mode", 2026-06-26)
libcthulhu
- 2e8b391: ("ci: enable support for Cobertura XML report generation", 2026-08-14)
- 5265d4d: ("unit-tests: add tests for cthulhu_ctr_start_data_clean and cthulhu_ctr_start_data_init", 2026-08-14)
- c6c0767: ("ci: doc: enable Doxygen doc from extra dirs and for static functions", 2026-08-14)
- 7725928: ("libcthulhu: add enable_host_capabilities to cthulhu_ctr_start_data_t", 2026-06-26)
timingila
- 30f97e6: ("timingila: add support for unprivileged user capabilities inheritance", 2026-06-26)
cthulhu
- 46560fd: ("README.md: describe host capabilities inheritance", 2026-08-18)
- 054d283: ("ci: cthulhu: enable Doxygen documentation for static functions", 2026-08-13)
- 437a6ec: ("cthulhu: allow inheriting Linux capabilities on host namespace for non-root containers", 2026-06-26)

References: PCF-2687
Signed-off-by: Nabil BIZID <nabil.bizid@softathome.com>
Signed-off-by: FAOUZI YAHYA <faouzi.yahya_ext@softathome.com>
2026-08-27 13:42:47 +01:00
Jef Steelant
363e08ea5a ci: cram: add tests for unprivileged containers with capabilities
Add automated tests for container capabilities behavior

- Verify that in unprivileged mode with EnableHostCapabilities disabled,
  containers cannot use assigned capabilities or bind to system ports
  as non-root users.
- Verify that in unprivileged mode with EnableHostCapabilities enabled,
  containers can use assigned capabilities, bind to system ports,
  and run processes as non-root users, with proper filtering of blacklisted capabilities.

References: PCF-2687
Signed-off-by: Jef Steelant <jef.steelant_ext@softathome.com>
2026-08-27 13:40:43 +01:00
Alexandre Fiset
890ac4f2ff ci: cram: dhcpv4 client options: shorten the settle wait
The three waits in 018-dhcpv4-client-options.t let dnsmasq record the lease
and dhcpv4-manager propagate the client and its options into
Device.DHCPv4.Server.Pool.Client. before the following ba-cli queries read
them back. On the testbed that propagation completes well within a second,
so three seconds only lengthens the run.

Reduce the three waits to one second, saving six seconds per run.

References: PPW-2188
Signed-off-by: Alexandre Fiset <alexandre.fiset@softathome.com>
2026-08-27 10:34:13 +00:00
Alexandre Fiset
49c0eca805 ci: cram: dhcpv4 force option: retransmit and report probe failures
Problem: 017-dhcpv4-force-option.t intermittently fails with a bare [2] on
the two probes that follow the Force=0 write, while the Force=1 probe just
before them passes.

Writing a Device.DHCPv4.Server. parameter makes dhcpv4-manager rewrite the
dnsmasq configuration and restart dnsmasq. The test only waited one second
afterwards and dhcpv4_option_probe.py sent its DHCPDISCOVER exactly once,
so a request issued during that restart window was lost and the probe gave
up after the timeout instead of reporting the option state under test.

The reason was invisible: all five probe error paths wrote to stderr, which
the test discards with 2>/dev/null, so every one of them looked identical in
the .t.err artifact.

Solution:
- retransmit an unanswered DHCPDISCOVER/DHCPREQUEST, --retries (default 2)
- print the ERROR line on stdout so it stays visible in the Cram diff
- release the lease on the last probe so no lease is left behind

A passing run is unaffected: retransmission stops as soon as the reply
arrives and nothing is written to stderr on success.

References: PPW-2188
Signed-off-by: Alexandre Fiset <alexandre.fiset@softathome.com>
2026-08-27 10:34:13 +00:00
Hela Saadani
48a2562bb4 ci: cram: obuspa: add getApplicableBandwidthPerChannel()
Update obuspa test to add getApplicableBandwidthPerChannel()

References: PPM-3575
Signed-off-by: Hela Saadani <hela.saadani_ext@softathome.com>
2026-08-27 11:15:48 +01:00
Kysil Dmytro
bf817fd8e6 profiles: prpl_core.yml: feed_prplmesh: fix finding bandwidth for channel
Currently, prplMesh does not know which channel–bandwidth combinations
are valid and therefore saves all possible combinations. This results
in many errors spamming the logs.

To fix this, `getApplicableBandwidthPerChannel` was implemented. From now
on, prplMesh will only use channel–bandwidth combinations that are
reported by pwhm for a specific `Radio` object.

Integrates:
pwhm:
- a6e7f5b02: ("tests: test _getApplicableBandwidthPerChannel()", 2026-08-05)
- 45299bfe8: ("tests: unit test for wld_channel_getApplicableBwMask", 2026-08-03)
- 378ed4936: ("pwhm: radio: implement getApplicableBandwidthPerChannel", 2025-11-12)
prplmesh-dm-mapper:
- 14a466d: ("odl: add getApplicableBandwidthPerChannel()", 2026-08-11)

Closes PPM-3575
References: PPM-3575
Signed-off-by: Kysil Dmytro <d.kysil@inango-systems.com>
signed-off-by: Hela Saadani <hela.saadani_ext@softathome.com>
2026-08-27 11:15:23 +01:00
Petr Štetiar
55fa5598c7
ci: cram: gate arming builds on component selection
An automatic CRAM job waits for a manual build only when that build is
non-optional and not allowed to fail. Leaving the manual build default
in place would skip the downstream job initially and could run it after
a failed build.

Override rules on the six builds consumed by automatic CRAM jobs. Make
a build blocking exactly when its board's automatic job is armed, using
the same changes anchors and label policy. Keep variable and skip
stand-down paths manual and non-blocking.

GitLab gives a manual job selected through rules the real default of
allow_failure: false. Scope the explicit non-blocking fallback to merge
request pipelines so non-arming MRs do not block, while push, web, API,
and branch pipelines retain their existing implicit blocking form.

Preserve schedule, designated-branch, and release-tag behavior. Leave
the x86_64 and extender builds unchanged.

Assisted-by: codex:gpt-5.6-sol
References: CI-9
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2026-08-26 20:37:11 +02:00
Petr Štetiar
647353c929
ci: cram: add report and auto component selection jobs
Merge request changes currently leave all component CRAM jobs dormant.
Reviewers cannot see the selected coverage without resolving the matrix
themselves, and playing a bucket job cannot combine affected components
into one boot.

Add per-board changes anchors and six automatic component jobs. Resolve
their content from refreshed merge request labels and the diff before
any testbed setup. Exit cleanly without DUT cleanup when selection is
empty.

An automatic selection resolves a union of components that can become a
full run, so give these jobs the full-tier 85-minute budget instead of
the 40-minute component budget they would otherwise inherit.

Add an MR-only report job that prints the complete selection matrix
without a build or hardware dependency. Keep all 24 existing bucket jobs
unchanged.

The automatic template originally extended .cram_component as the later
parent after each board template. GitLab's parent precedence therefore
reapplied generic .testbed variables over board-specific values. This
changed DUT_WAN_INTERFACE on Freedom, Omnia, Haze, Mozart, and Valyrian,
and DUT_ARCH_PACKAGES_PATH on OSPv2, Haze, Mozart, and Valyrian. The
resulting Freedom failures exposed the wrong interface:

```text
014-firewall-levels.t: grep $DUT_WAN_INTERFACE -> [1]
045-qos.t: grep $DUT_WAN_INTERFACE -> [1]
```

Make .cram_component_auto a standalone overlay because the board parent
already supplies the component script and testbed chain. Add a committed
guard that resolves all six extends chains and requires each automatic
job to preserve its full-bucket sibling's variables.

Assisted-by: codex:gpt-5.6-sol
References: CI-9
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2026-08-26 20:37:10 +02:00
Petr Štetiar
9e6ef2d25c
ci: cram: lint selection drift and profile coverage
The selection matrix must remain synchronized with profile additions and
the rules that phase 2 will wire into automatic jobs. Silent divergence
would either miss required testing or arm a job with no useful work.

Require every tracked or untracked profile to match a selection row.
Lock the derived per-board changes lists with count and digest fixtures.
When automatic jobs exist, compare their rules directly. Until then,
report the missing wiring and keep the CI-7 lint invocation green.

Verify all 29 profiles are categorized. Confirm an uncategorized
synthetic profile and an invalid drift fixture both fail. Then remove
the probe.

Add an offline fixture for every matrix row and a synthetic Git-history
battery for bucketing, unions, collapse, precedence, empty outcomes,
resolution errors, and fork-shaped refs.

Assisted-by: codex:gpt-5.6-sol
References: CI-9
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2026-08-26 20:37:09 +02:00
Petr Štetiar
15c1b5bd17
ci: cram: add diff-based component selection
Automatic component jobs need one reviewed source for path-to-board and
path-to-component decisions. Keeping that policy beside the existing
test buckets lets shared code classify changed tests consistently.

Add the six-board selection matrix and all board-specific,
cross-cutting, and explicit no-op paths. Validate the matrix while
loading the manifest.
Add a resolver for variable and label precedence, Git diffs, all-match
component unions, full collapse, empty reasons, and report output.

Exercise union routing, test classification, collapse, precedence,
stand-down reasons, defensive label errors, and six-board reporting
in an offline synthetic repository. Component coverage stays green.

Assisted-by: codex:gpt-5.6-sol
References: CI-9
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2026-08-26 20:37:08 +02:00
Petr Štetiar
d001612fee
ci: cram: resolve comma-separated component unions
Multi-component changes currently require separate CRAM jobs. They
repeat the board boot. The automatic selector needs one resolver
invocation that can cover all affected component buckets.

Accept comma-separated components and build their ordered union from
the legacy full-suite order. Prefix sanity tests once, remove duplicate
tests and retain the existing behavior for every single component and
full.

Compare all five legacy selections on all six boards with the CI-7 base.
All 30 outputs are byte-identical. Verify forward and reverse
two-component unions on all six boards, including stable ordering and
uniqueness.

Assisted-by: codex:gpt-5.6-sol
References: CI-9
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2026-08-26 20:37:07 +02:00
Petr Štetiar
abebe0921f
ci: profiles: split feed pins into per-feed files
Keep feed pin changes isolated so diff-based CRAM selection can map each
feed update to the component it affects.

Move the three prpl_core feed entries into dedicated profile files and
include them from prpl_core. Preserve each feed entry byte-for-byte.

Run scripts/gen_config.py for all nine build-test profile argument sets
at the base pin and after the split. The offline harness allowed local
feed setup while suppressing network update/install and make
subprocesses. All 27 generated stdout, .config, and feeds.conf artifacts
were identical.

Assisted-by: codex:gpt-5.6-sol
References: CI-9
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2026-08-26 20:37:06 +02:00
Petr Štetiar
2f8f709283
profiles: prpl_core.yml: feed_prplos: uboot-tools: fix host build broken by PyPI swig 4.5.0
Point the feed_prplos revision at the uboot-tools fix for the host
build breakage caused by the swig 4.5.0 release on PyPI: pylibfdt's
isolated PEP 517 build environment installs swig unpinned, and the
stricter find_package(PCRE2 10.39 REQUIRED COMPONENTS 8BIT) check in
4.5.0 rejects the buildroot's static host pcre2 CMake config:

  Could NOT find PCRE2: missing: 8BIT (found .../pcre2-config.cmake
  (found suitable version "10.42.0", minimum required is "10.39"))
  ERROR: package/feeds/feed_prplos/uboot-tools [host] failed to build.

Last good pipeline 2761854007 (2026-08-15), first bad 2781934108
(2026-08-22); the swig release date of 2026-08-21 falls between the
two runs and no commit in that range touches the package.

The feed change pins swig to 4.4.1 through a constraints file exported
via PIP_CONSTRAINT, which pip forwards into isolated build
environments. Validated with a local fail-then-pass rebuild of the
uboot-tools host package.

Closes: PPW-2321
Assisted-by: claude:fable-5
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2026-08-25 09:37:19 +02:00
Marteb
a07d59a63b ci: cram: packetinterception: update PacketInterception test
Signed-off-by: Marten Barrett <marten.barrett@softathome.com>
2026-08-24 09:05:39 +00:00
ahmed sassi
a49a1afa0c ci: cram: obuspa: update obuspa test
Signed-off-by: ahmed sassi <ahmed.sassi_ext@softathome.com>
2026-08-24 09:05:39 +00:00
ahmed sassi
daccd45f5c ci: cram: prplos: update 005-build-config
References: PPW-2364
Signed-off-by: ahmed sassi <ahmed.sassi_ext@softathome.com>
2026-08-24 09:05:39 +00:00
prplbot
c7879daed7 profiles: prpl_core.yml: feed_prplos: packet-interception,libnetlink-utils,libpacket-interception: packetinterception: performed speed optimizations and added eventing support (FEAT-348)
Integrates following changes:
- packetinterception: performed speed optimizations and added eventing support (71296665)
- ci: baf: update autogenerated files (0777e828)
- ci: fixed unit tests (66d3d4f8)
- ci: baf: update autogenerated files (9a8af4d1)
- ci: coverity (076712a4)
- ci: enable crosscompilations (eda7d158)
- ci: baf: update autogenerated files (935e57fd)
- libpacket-interception: moved functionality to libnetlink-utils (08d770fd)
- ci: enable crosscompilations and unit tests (134d89ed)
- ci: baf: update autogenerated files (1f315152)
- libnetlink-utils: Added several optimizations to limit the copying of data (1077df47)

References: PCF-2364
Signed-off-by: prplbot <bot@prplfoundation.org>
2026-08-24 09:05:39 +00:00
prplbot
3b128e6d66 profiles: lcm.yml: feed_lcm: cthulhu-plugin-usp: plugin-usp:avoid using uninitialized data in usp_ctr_generate_endpointid
Integrates following changes:
- plugin-usp: avoid using uninitialized data in usp_ctr_generate_endpointid (9905d795)

References: PPW-2011, CID-30866
Signed-off-by: prplbot <bot@prplfoundation.org>
Signed-off-by: FAOUZI YAHYA <faouzi.yahya_ext@softathome.com>
2026-08-22 17:17:41 +01:00
prplbot
eca641acb4 profiles: prpl_core.yml: feed_prplmesh: pwhm: wifiGen: fix wpaCtrlInterface memory leak
Integrates following changes:
- wifiGen: fix wpaCtrlInterface memory leak (64097d6b)

References: PPW-2270
Signed-off-by: prplbot <bot@prplfoundation.org>
Signed-off-by: FAOUZI YAHYA <faouzi.yahya_ext@softathome.com>
2026-08-21 14:14:51 +01:00
prplbot
b7b2801e5b profiles: prpl_core.yml: feed_prplmesh: pwhm: genEvt: ensure wds station seen and auth before assuming connection
Integrates following changes:
* 03fd769fd genEvt: ensure wds station seen and auth before assuming connection
* e628fbb44 genEvt: assume deauthTx and disassocTx as disconnection events
* 45e811b66 genVap: detect disconnected station when getting single station stats
* 1c1a40cfd nl80211: fix retcode when station entry is not found

References: PPW-1523
Signed-off-by: prplbot <bot@prplfoundation.org>
2026-08-21 09:29:07 +01:00
Jen Freeman
5a173e2a86 profiles: prpl-core: feed-prplos: tr181-security: Correct version information for Security.Certificate
Integrates following changes:
- b604e81: ("odl: correct version information for Security.Certificate", 2026-07-30)

References: PPW-2233
Signed-off-by: Jen Freeman <jen.freeman@consult.red>
signed-off-by: Hela Saadani <hela.saadani_ext@softathome.com>
2026-08-19 11:56:18 +01:00
Petr Štetiar
b0aa5e3e34 ci: cram: size component job timeouts
Component jobs currently inherit the full-tier 85-minute timeout.
Measured runs peak at 35.8 minutes for components and 80.8 minutes for
the full tier.

Set each tier to the smallest five-minute multiple at least four
minutes above its maximum observed duration. This gives component jobs
40 minutes and retains 85 minutes for full jobs.

Keep the full-job limit explicit because those jobs would otherwise
inherit the new component limit. A hung component job now releases its
device roughly 45 minutes sooner.

Assisted-by: claude:opus-5:orchestrator
Assisted-by: codex:gpt-5.6-sol:medium-fast
References: CI-7
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2026-08-19 10:14:27 +00:00
Petr Štetiar
2fdd09ead1 ci: testbed: summarize trailing test paths
run_check reports a failed command by expanding its complete argument
list. A full Freedom cram run carries about 199 test paths, producing
one roughly 13,000-character log line that obscures the actual failure.

The test arguments form a contiguous .t suffix. Count and replace only
that suffix with `(N tests)` in failure diagnostics, leaving the command
head and non-test invocations unchanged. Keep executing the original
arguments and preserve status and sentinel handling.

Cram's --verbose job output still lists each test path and result. The
component resolver continues to emit the selected path list used by the
job.

Assisted-by: claude:opus-5:orchestrator
Assisted-by: codex:gpt-5.6-sol:medium-fast
References: CI-7
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2026-08-19 10:14:27 +00:00
Petr Štetiar
ffff4ed676 ci: cram: accept live br-lcm carrier state
The LCM bridge carrier reflects whether its container-side port is
live. Split execution can inspect it before the LCM suite tears that
state down, so the bridge can appear either live or without carrier.

Carrier state is not the route line's only variable part: ip route
also emits a trailing separator. Account for that separator after the
optional linkdown flag so both carrier states match.

Accept both observed route and link forms in every board's copy of the
affected expectations while keeping every address, interface
attribute, and the carrier-to-state pairing constrained.

Assisted-by: codex:gpt-5
Assisted-by: claude:opus-5:orchestrator
Assisted-by: codex:gpt-5.6-sol:medium-fast
References: CI-7
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2026-08-19 10:14:27 +00:00
Petr Štetiar
8b234753ca ci: cram: wait for UPnP discovery readiness
The split prplos bucket reaches the discovery assertions sooner than the full suite and can observe an empty first root device.

Poll for the first root-device UUID for at most one minute before retaining the existing parameter assertions unchanged.

Assisted-by: codex:gpt-5
References: CI-7
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2026-08-19 10:14:27 +00:00
Petr Štetiar
11eb3b38a5 ci: cram: detach mapper proxy from generic inventory
The data-model-mapper sibling test installs its package at runtime and creates Device.X_PRPLWARE-COM_SoftwareModules. The generic inventory must not depend on that sibling side effect.

Filter the mapper-only element following the cellular detachment precedent in e342d300. The mapper test continues to exercise the element in the LCM bucket.

Assisted-by: codex:gpt-5
References: CI-7
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2026-08-19 10:14:27 +00:00
Petr Štetiar
0054cef6b0 ci: cram: create component jobs as manual by default
Component jobs start automatically whenever CRAM_COMPONENTS selects
them, and the variable defaults to prplos. Every merge-request pipeline
therefore schedules six hardware jobs whether or not anybody needs
them, and the bucket choice is fixed before the pipeline exists. The
non-DUT manifest lint also starts automatically in non-scheduled
pipelines.

Testbed time is the scarce resource, and the build test jobs feeding
these DUT jobs are already manual in merge-request pipelines. The
natural flow is to pick buckets after a build finishes, not at
pipeline creation. The lint should follow the same opt-in flow.

Drop the CRAM_COMPONENTS default and add trailing manual rules so every
component job and the lint appear as optional play buttons in
non-scheduled pipelines. Manually started jobs never gate the pipeline
result. With no opt-in variable or release-tag override, no cram-related
job at all, lint included, starts automatically.

Setting CRAM_COMPONENTS still starts the listed buckets automatically
with each board's existing blocking behavior. The automatic full run in
prplware release tag pipelines is unchanged.

Assisted-by: claude:fable-5
References: CI-7
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2026-08-19 10:14:27 +00:00
Petr Štetiar
3c56f4f028 ci: cram: lint component manifest in pipelines
The component manifest lint currently runs only during local validation.
Merge requests get no feedback when new tests silently enter the prplos
remainder.

Add a non-DUT manifest coverage job to every pipeline. Fetch an MR base
when needed and pass it to the lint. Newly-in-remainder warnings then
appear in job output.

Give the job explicit rules: a job without rules keeps the legacy
branches-and-tags default and is never created in merge-request
pipelines, the exact place the diff-base comparison exists for. Skip
scheduled pipelines, which carry no cram work.

Use the digest-pinned testbed v1.3.0 image for Python, YAML, and git. The
MR diff-base comparison requires runtime git for cat-file, fetch, and the
lint script's child processes.

The image runs as the testbed user while the runner checkout has a
different owner. Git otherwise rejects the checkout before lint starts:

```text
fatal: detected dubious ownership in repository at
'/builds/prpl-foundation/prplos/prplos'
```

Pass a safe.directory override for CI_PROJECT_DIR through Git's inherited
configuration environment. Print the selected MR diff base so the
comparison path remains visible in job evidence. Add no hardware runner
tags or build dependencies.

Assisted-by: codex:gpt-5
Assisted-by: claude:fable-5
References: CI-7
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2026-08-19 10:14:27 +00:00
Petr Štetiar
26895230f7 ci: cram: add component split jobs behind CRAM_COMPONENTS
The hardware cram jobs currently run each board's complete suite. Every
automatic pipeline therefore consumes coverage that can be selected more
cheaply by component.

Add a runtime component template so test collection happens in cram's
checkout and environment. Replace each legacy board job with four static
full, prplmesh, lcm, and prplos jobs selected through the
comma-separated CRAM_COMPONENTS variable.

Name each job `cram <board> [<component>]` and include the selected
component in the expandable test-execution section title.

Move the MXL-specific cram skip from the legacy job-name token. Use the
stable DUT board identifier instead.

Preserve skip behavior under the compact OSPv2 name.

Default automatic pipelines to prplos. Start the full jobs
automatically in prplware release tag pipelines, whose build jobs also
run automatically. Keep cram jobs out of scheduled pipelines entirely,
as with the legacy suite: schedules never create the build jobs these
jobs need, so any selected cram job would fail scheduled pipeline
creation with an unsatisfiable needs reference. Keep the test command,
post suite, timeout, run_check, and JUnit filenames unchanged.

Assisted-by: codex:gpt-5
Assisted-by: claude:fable-5
References: CI-7
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2026-08-19 10:14:27 +00:00
Petr Štetiar
cc6961453f ci: cram: add component manifest lint
The computed prplos remainder keeps existing tests covered, but it can
also hide accidental classification of newly added tests. Stale or
overlapping component globs can likewise make split jobs unreliable.

The sanity set adds another strict boundary: a sanity test must not also
belong to an explicit component bucket.

Add a location-agnostic lint using the shared bucketing implementation.
Validate the schema, glob coverage, and sanity and explicit-component
exclusivity. Check the reserved smoke and hardware-only sets. Include
sanity in the reported bucket counts. Accept either a Git ref or a file
list as the baseline for newly-in-remainder warnings. Report missing
targets for tracked test symlinks without failing the otherwise valid
manifest.

Assisted-by: codex:gpt-5
References: CI-7
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2026-08-19 10:14:27 +00:00
Petr Štetiar
9ccf6463e0 ci: cram: add component manifest and resolver
The legacy cram suite repeats nested directories to run setup-sensitive
tests early. Component jobs need the same ordered and deduplicated file
list without embedding repository locations in the CI configuration.

Some DUT and environment checks also need to run before every split
component because their failure invalidates the rest of that job.

Add a reserved sanity set and the lcm and prplmesh manifest buckets,
keeping prplos as the computed remainder. Remove sanity matches before
partitioning the other tests, and prepend the ordered sanity block when
resolving any split component. Keep full-suite resolution unchanged and
allow the sanity block to be resolved directly for inspection.

Add a shared collector which preserves cram 0.7 traversal and
first-occurrence deduplication. Retain broken test symlinks so
pre-existing tree defects cannot crash list resolution.

Assisted-by: codex:gpt-5
References: CI-7
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2026-08-19 10:14:27 +00:00
prplbot
24e5c17a31 profiles: prpl_core.yml: feed_prplos: tr069-manager: Fix missing documentation artifacts in build-documentation job
Integrates following changes:
- baf: fix documentation artifact generation (61fd9c6d)
- baf: fix documentation artifact generation (1c848718)
- ci: baf: update autogenerated files (f0b6acb7)

References: PPW-2146
Signed-off-by: prplbot <bot@prplfoundation.org>
2026-08-19 10:58:14 +01:00
FAOUZI YAHYA
9ad9b5e82d profile: prpl_core.yml: feed-prplos: iperf3: upstep to 3.21
Upgrade iperf3 to a version that includes fixes for the CVEs identified
by the BlackDuck security scan.

Resolved vulnerabilities:
- CVE-2024-53580: DoS vulnerability (HIGH)
- CVE-2025-54349: Off-by-one heap overflow in authentication (MEDIUM)
- CVE-2025-54350: Security issue resolved by upstream release
- CVE-2025-54351: Buffer overflow in UDP MSG_TRUNC/zerocopy path (HIGH)

References: PPW-2137
Signed-off-by: FAOUZI YAHYA <faouzi.yahya_ext@softathome.com>
2026-08-19 09:21:18 +01:00
Hela Saadani
48ad0bb77e fix: Restore the changes made for PCF-2730: restore version branch defaults
Changes made in this commit f694f20d9b were undone by this one 8b7913caef causing an issue with the builds
the goal of this MR is to restore that change

References: PCF-2730
Signed-off-by: Hela Saadani <hela.saadani_ext@softathome.com>
2026-08-18 16:25:44 +01:00
Matthias Franck
af1d1f7ae1 botan: upstep to 3.12.0
Upstep Botan from 2.19.4 to 3.12.0 to address vulnerabilities
reported by the BlackDuck scan on the Fast Track platforms.

The update covers the reported CVEs that are fixed in newer Botan releases:

CVE-2026-32877 / BDSA-2026-5921, fixed in Botan 3.11.0
CVE-2026-32884 / BDSA-2026-5922, fixed in Botan 3.11.0
CVE-2024-39312 / BDSA-2024-4197, fixed in Botan 3.5.0 and 2.19.5
CVE-2024-34702 / BDSA-2024-4196, fixed in Botan 3.5.0 and 2.19.5

References: PPW-2051
Signed-off-by: Matthias Franck <matthias.franck@softathome.com>
2026-08-18 13:23:50 +01:00
prplbot
9f45b6405a profiles: prpl_core.yml: feed_prplos: tr181-dhcpv6client: fix Renew() not updating ReceivedOption in stateless mode
Integrates following changes:
- tr181-dhcpv6client: fix Renew() not updating ReceivedOption in stateless mode (104c9df2)

References: PPW-1037
Signed-off-by: prplbot <bot@prplfoundation.org>
Signed-off-by: FAOUZI YAHYA <faouzi.yahya_ext@softathome.com>
2026-08-18 10:53:06 +00:00
Alexandre Fiset
4d250f3833 .gitlab: cram: update expected lspci output after hwdata upstep
The packages feed revision bumped by this alignment moves hwdata from
0.387 to 0.407. Its pci.ids now carries a name for 17cb:0308, so lspci
reports "SDX61/SDX62/SDX65 [Snapdragon 5G X6X-series]" where it used to
fall back to "Device 0308".

References: PPW-1773, PPW-2138, PPW-1785
Signed-off-by: Alexandre Fiset <alexandre.fiset@softathome.com>
2026-08-18 11:40:42 +01:00
Matthias Franck
65cd90f8bb .gitlab: cram: update expected output after alignment with openwrt v24.10.8
Some default config options in the curl package changed, so let's align the tests accordingly.
See:
f693e556ac
a9bd8f6f58
b087bf1841
2dbe2c0008

References: PPW-1773, PPW-2138, PPW-1785
Signed-off-by: Matthias Franck <matthias.franck@softathome.com>
2026-08-18 11:40:42 +01:00
Hauke Mehrtens
8b7913caef OpenWrt v24.10.8: adjust config defaults
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 0b795ce79e23b553aa184080c390f9ce92a2b6d4)
2026-08-18 11:40:42 +01:00