Commit Graph
244 Commits
Author SHA1 Message Date
Joachim Wiberg b3450d004d doc: lead README with the product, tidy prose
Reorder the README so newcomers see the product before the philosophy:
CLI demo and web UI up top, a "Try it in 5 minutes" section linking the
GNS3 and build-from-source guides, then hardware and the rest.  Tone
down the remaining marketing prose in the hardware and use-case lists.

Rename CODE-OF-CONDUCT.md to CODE_OF_CONDUCT.md so GitHub recognises it
as the community code of conduct, and link the .github/ health files
from the README.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-06-20 19:26:21 +02:00
Joachim Wiberg a0c0a5e45c .github: remove unused inventory.yml maintenance workflow
Not needed anymore.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-06-18 19:19:41 +02:00
Joachim Wiberg 0fd8696860 .github: drop .sha256 sidecar files from releases
GitHub now publishes a sha256 checksum for each release asset, so the
separately generated .sha256 files are redundant.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-06-18 18:19:14 +02:00
Joachim Wiberg a365238854 .github: scan Go modules for known vulnerabilities
Add govulncheck CI and Dependabot for the two Go modules, src/webui
and src/netbrowse, so vendored dependencies don't quietly accumulate
CVEs between manual updates.

The workflow reports every finding in the run summary but only fails
on vulnerabilities our code actually calls in a dependency.  Called
stdlib vulnerabilities are surfaced too, but they're fixed by bumping
the Buildroot host Go rather than a module's go.mod, so they don't
gate the build.

Dependabot ignores openconfig/goyang: it's pinned to our kernelkit
fork via a replace directive and stepped by hand.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-06-18 09:02:36 +02:00
Richard AlpeandJoachim Wiberg 390e60cfcb .github: move setup-mkdocs to kernelkit/actions
Finishes the migration started in 63f46d4d: setup-mkdocs was still
referenced via a relative ./.github/actions path, which GitHub resolves
against the calling repo, not infix, breaking spins (e.g. Styx) that
reuse build.yml/build-release.yml. Use kernelkit/actions/setup-mkdocs@v1.2.

Signed-off-by: Richard Alpe <richard@bit42.se>
2026-06-17 06:56:09 +00:00
Joachim WibergandGitHub 227f1290fd Merge pull request #1457 from kernelkit/web 2026-06-15 22:58:44 +02:00
Joachim Wiberg e412c28c37 webui: bundle on-device User's Guide
Build the mkdocs User's Guide into WebUI images and surface it in the UI.
post-build.sh runs `mkdocs build` from the top-level mkdocs.yml into
/var/www/guide when the webui package is selected and mkdocs is on the
build host; nginx serves it read-only at /guide/.  The build is
best-effort — a missing mkdocs warns and ships without the guide rather
than failing — and minimal images (no webui) skip it.

The WebUI gates a book icon in the topbar and a User Guide item in the
user menu on the docs being present on disk (os.Stat, fail-closed), both
opening /guide/ in a new tab.

CI: a local setup-mkdocs composite action installs mkdocs and the
plugins from mkdocs.yml; the build and release workflows run it before
the build so images produced in CI include the guide.  developers-guide
documents the new build dependency and restores the missing
mkdocs-glightbox plugin.

Fixes #633

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-06-15 19:45:25 +02:00
Ejub Sabic 9853e08145 test: Added xpath coverage report generation (make test)
This commit introduces xpath coverage test report. It plugs into transport layer of test system and generates .md report.
Commit also introduces "make xpath-coverage-report" used to generate pdf out of md.

Resolves: #581
Signed-off-by: Ejub Sabic <ejub1946@outlook.com>
2026-06-15 12:26:51 +02:00
Ejub Sabic 91fc7466c2 fix: gh-action node 20 deprecation warnings
Resolves: #1519
Signed-off-by: Ejub Sabic <ejub1946@outlook.com>
2026-06-05 08:12:37 +02:00
Mattias Walström 87c2d3fc77 CI: Refactor build-image workflow
Reduce the number of duplication and try to simplify the flow.
2026-05-19 13:45:25 +02:00
Mattias Walström bfbf08943b mt7986: Add Acer Connect Vero w6 2026-05-19 06:38:32 +02:00
Joachim Wiberg 3a6e70ba26 .github: temporarily disable release regression tests
The regression tests do not pass for some reason, could be faulty test
runner (Lifeboat) -- container and DHCP tests failing since Apr 30), so
tests are disabled until the runner is fixed.

[skip ci]

Issue #1392

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-05-04 09:33:46 +02:00
Joachim Wiberg 52ef3e2ded .github: set INFIX_RELEASE when running release tests
Without INFIX_RELEASE, make test resolves INFIX_ARTIFACT to the
unversioned infix-x86_64, but release builds produce versioned
artifacts (infix-x86_64-v26.04.0-rc1.qcow2 etc.), causing the
test environment to fail with "No such file or directory".

[skip ci]

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-04-30 18:34:35 +02:00
Joachim Wiberg e49682645c .github: run regression tests as part of release workflow
Add an x86_64 regression test job to release.yml that runs after the
build and gates publishing — the release job now requires both build
and test to succeed.

Update test.yml's artifact restore step to use a glob so it handles
both the unversioned CI artifact name (infix-x86_64.tar.gz) and the
versioned release artifact name (infix-x86_64-26.04.0.tar.gz).

Fixes #1392

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-04-30 13:45:35 +02:00
Joachim Wiberg 4212a38c3b .github: bump GitHub Actions to Node.js 24 compatible versions
Fixes #1437

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-04-19 22:31:15 +02:00
Joachim Wiberg 31df56308b board: add support for Banana Pi BPI-R4
Add board support for the BananaPi BPI-R4 router board, based on the
MediaTek MT7988A (Filogic 880) SoC with quad-core Cortex-A73 CPU.

The BPI-R4 is the successor to the BPI-R3 but uses entirely different
silicon: the internal switch runs at 2.5 GbE per port, the two SFP+
uplinks use native USXGMII at up to 10 Gbps, and WiFi is provided by
a MediaTek MT7996E PCIe module supporting tri-band WiFi 7 (2.4/5/6 GHz).

Two board variants, BPI-R4-2g5 and BPI-R4P, replace one SFP+ cage with
a 2.5 GbE RJ45 port (using the MT7988A internal 2.5G PHY); the R4P adds
an optional PoE daughterboard on that port.  Both use the upstream
mt7988a-bananapi-bpi-r4-2g5 device tree.

Interfaces:
- Standard R4:  eth1 (gmac1/sfp2 LAN cage) → sfp2, eth2 (gmac2/sfp1 WAN cage) → sfp1
- R4-2g5/R4P:  eth1 (2.5G PHY) → wan, eth2 (gmac2/sfp1 WAN cage) → sfp1

Factory reset / WPS button (GPIO14, active-low): detected by U-Boot at
boot for factory reset; reused by Linux as KEY_WPS_BUTTON at runtime.

eMMC install note: the MT7988A eMMC (pins 38-49) and SD card (pins 32-37)
use separate physical pads so there is no electrical bus sharing, unlike
some BPi-R3 configurations.  However, a single MMC controller
(mmc@11230000) handles both, so only one is active per boot session.
The eMMC install procedure therefore still requires an intermediate SPI
NAND bootloader step until a Linux-side install path is tested.

SD card build (bpi_r4_sd_boot_defconfig) now uses the new
mt7988a_bpir4_sd U-Boot defconfig with cap-sd-highspeed enabled,
giving 50 MHz SD transfers instead of the previous 25 MHz legacy mode.

Also adds MT7988/MT7996 firmware support to the buildroot linux-firmware
package, for 2.5 GbE port PHY and WiFi7 extension board, and updates the
aarch64_defconfig, aarch64_minimal_defconfig, the arch README, CI
boot/image workflows, mkimage.sh, and the ChangeLog.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-04-10 11:19:34 +02:00
Joachim Wiberg 93bff6260e Add project links to User Guide and update SUPPORT.md
Fixes #1456

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-03-30 14:43:09 +02:00
Joachim Wiberg 1558b6bf7e .github: coverity: use matching sysrepo + libyang versions
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-03-22 20:23:42 +01:00
Joachim Wiberg d3dc47ac8e .github: add libavahi-client-dev to Coverity Scan dependencies
statd now uses avahi-client for mDNS neighbor tracking, so the
native build needs libavahi-client-dev to satisfy pkg-config.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-03-20 17:06:17 +01:00
Joachim WibergandClaude Sonnet 4.6 63f46d4d43 .github: move local actions to kernelkit/actions repo
Fixes a regression from 0c11cea where local composite actions
(.github/actions/) were referenced with relative paths. When spins
reuse our reusable workflows, GitHub resolves relative action paths
in the context of the calling repo, not infix — breaking the build.

Replace all uses of ./.github/actions/{cache-restore,podman-cleanup}
with kernelkit/actions/{cache-restore,podman-cleanup}@v1 (new repo).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-16 14:38:58 +01:00
Joachim Wiberg 121abe7891 .github: add bpi-r64 to image builder
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-03-10 12:11:11 +01:00
Mattias Walström 002c7791ec CI: Run unit test once, not once per platform 2026-02-27 11:06:30 +01:00
Joachim Wiberg 3d088f3e2b Add support for Microchip SAMA7G54-EK Evaluation Kit
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-02-06 13:30:20 +01:00
Joachim Wiberg 0c11cea07b .github: refactor, simplify, and reduce duplication in actions
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-02-05 08:50:21 +01:00
Joachim Wiberg 65b674855a .github: add rpi2 bootloader and SD card image builds
Add Raspberry Pi 2B to the bootloader build matrix and raspberrypi-rpi2
to the SD card image builder, enabling full RPi 2B image creation.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-02-05 08:50:09 +01:00
Joachim Wiberg 71ec4fa220 .github: add arm_defconfig and arm_minimal_defconfig builds
Catch ARM 32-bit build regressions early by adding arm targets
to the familty of Infix image and release builds.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-02-05 08:50:09 +01:00
Mattias Walström 262b60c5cb workflow: build-image: Fix typo in bpi bootloader 2026-01-26 09:21:57 +01:00
Joachim Wiberg 8f1c4d6bf2 utils: new script, extract-changelog.md for releases
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-01-25 11:15:46 +01:00
Mattias Walström d9e6ec8032 workflow: Fix SD-card/eMMC image builds 2026-01-23 13:05:29 +01:00
Mattias Walström 1fd6aabe0c Fix automatic kernel upgrade
Was not prepared correctly for 6.18 kernels
2026-01-20 09:18:11 +01:00
Mattias Walström d3b39e80e2 github: workflow: Update the check kernel workflow to check for new 6.18
Since we use the same kernel for all platforms, we can update this job
to only check for 6.18 instead of 6.12.
2026-01-19 14:54:37 +01:00
Richard Alpe 79ec2fbc30 CI: allow upstream caller to specify branch
Signed-off-by: Richard Alpe <richard@bit42.se>
2025-11-25 15:14:52 +01:00
Richard Alpe d2e2adf878 CI: add pre-test-script workflow call variable
This allows a caller (Spin) to run arbitrary code before test starts.

Signed-off-by: Richard Alpe <richard@bit42.se>
2025-11-25 15:14:49 +01:00
Joachim Wiberg e01888f3d9 Fix Coverity Scan build target
When PR #1271 was merged (commit c34c8db4), it:

 1. Created a new coverity-build target in src/Makefile
 2. Updated .github/workflows/coverity.yml to call make coverity-build
 3. Forgot to add coverity-build as an explicit target in the top-level Makefile

This commit also simplifies src/Makfile a lot for readability.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-11-22 21:37:08 +01:00
Joachim Wiberg c34c8db435 src: reclaim 'make check' for manual use, add scan-build support
Let's give Coverity Scan its own make target so we can reuse 'make check'
for our own scan-build or cppcheck needs.

[skip ci]

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-11-20 19:31:04 +01:00
Joachim Wiberg b65aa32fbb .github: markdown syntax fixes and new section on code signing
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-11-20 10:45:45 +01:00
Joachim WibergandGitHub 00f20612f2 Merge pull request #1240 from kernelkit/bananapi-emmc
Bananapi eMMC support
2025-11-14 06:02:05 +01:00
Joachim Wiberg f135202b40 .github: update workflow to build emmc image for bpi-r3
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-11-12 23:40:31 +01:00
Joachim Wiberg 94fa7ea21c .github: drop rootfs.squashfs from release tarballs
Release tarballs waste ~131MB per architecture by including both
rootfs.itb and rootfs.squashfs, even though rootfs.itb already
contains the squashfs (itb = 4096-byte header + squashfs).

This change removes rootfs.squashfs from releases and provides two
solutions for users who need it:

1. utils/extract-squashfs.sh - Full-featured utility for extracting
   squashfs from release tarballs or .itb files. Includes validation
   and helpful error messages.

2. board/common/qemu/qemu.sh - Auto-extraction support. When running
   in initrd mode, automatically extracts rootfs.squashfs from
   rootfs.itb if missing. Zero user impact - ./qemu.sh just works!

Space savings: ~262MB per release (2 architectures × 131MB)

Fixes #858

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-11-08 12:57:35 +01:00
Joachim Wiberg 7a6b1ea311 .github: only set latest tag on .0 releases
Prevent patch releases from stealing the "latest" tag from newer minor
versions. Only vXX.YY and vXX.YY.0 releases should be marked as latest.

Fixes #1187

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-11-08 12:57:35 +01:00
Joachim Wiberg 5c08c48521 .github: trim down release tarballs
Collect only the most relevant info for SBOM. The CycloneDX format seems
to be what most tools are standardizing around, and they suggest saving
manifest.csv and cpe.json files.  This commit includes all *.csv files
and drops sources and licenses for release builds, as decided in #1192

Fixes #1217 resolves #1192

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-11-08 12:57:34 +01:00
Mattias Walström a1b5e3b63b bpi-r3: Add eMMC bootloader 2025-11-07 21:15:55 +01:00
Joachim WibergandGitHub bf2e739a0e Merge pull request #1239 from kernelkit/ci-improvements
CI: Allow upstream caller to run pre build script

[skip ci]
2025-11-07 15:20:03 +01:00
Mattias Walström c563a7caeb workflow: update-kernel: Only run on kernelkit/infix
[skip ci]
2025-11-06 10:22:21 +01:00
Richard Alpe 0b8d3307db .github: allow upstream caller to run pre build script
Allow a workflow caller to run pre-build scripts though a workflow
call variable. This is potentially dangerous as code can be injected
here. If for example a malicious actor wants to run there C2 code in
the context of someone else they could perhaps inject it here. I
assume this is protected by the same mecahism as the workflow files
themself. I.e. github users untrusted to the Infix org won't be able
to trigger workflows before being explicitly allowed to do so.

This patch also adds a checkout secret. This allows upstream callers
to fetch there own spin / fork though the infix workflows, if they
provide a checkout token with the correct permissions to do so.

Signed-off-by: Richard Alpe <richard@bit42.se>
2025-11-04 10:12:49 +01:00
Mattias Walström 0fde346a43 CI: Improve check for new kernel
Improve the script to be able to run in workflow and fix
the worflow and run each night.

Signed-off-by: Mattias Walström <lazzer@gmail.com>
2025-11-03 16:01:32 +01:00
Joachim Wiberg c3b1c28551 configs: rename rpi4_boot to rpi64_boot for consistency
Align bootloader naming with the board name raspberrypi-rpi64.

[skip ci]

Signed-off-by: Claude <noreply@anthropic.com>
2025-10-31 23:14:37 +01:00
Joachim Wiberg 38bd71614f .github: add NanoPi R2S to list of supported boot laoders
Also, sort the list alphabetically.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-10-31 22:33:41 +01:00
Joachim WibergandGitHub ed2355833e Merge pull request #1209 from kernelkit/confd-refactor-callbacks
Major refactor of how sysrepo callbacks is used in confd

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-10-31 17:49:53 +01:00
Joachim Wiberg 2fa495b112 .github: cleanup podman state before each run
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2025-10-31 13:26:09 +01:00