Commit Graph
18294 Commits
Author SHA1 Message Date
Ricardo Pardini 7d4a332af4 rk35xx/rockchip-rk3588: add check for 0-byte-dtb u-boot.itb for Radxa u-boot (vendor)
- uses the new hook `check_uboot_produced_binary_file`
- runs dumpimage and greps for magic string `Data Size:    0 Bytes`
- if found, exits with error
- this is to clearly catch build-host related issue in #8227
2026-06-29 13:25:41 +02:00
Ricardo Pardini c795a2bcce u-boot: introduce hook check_uboot_produced_binary_file
- this is called for each produced binary during u-boot build, before
  they're actually packaged
- each call passes binfile and base_binfile to indicate the binary
- add new hook to hashed hooks for u-boot artifact
2026-06-29 13:25:41 +02:00
EvilOlaf 09c274eab0 rockchip64-7.2: rewrite patches against v7.2-rc1 v26.8.0-trunk.277 2026-06-29 09:52:19 +02:00
EvilOlaf f8e5645514 general-add-panel-simple-dsi.patch: disable for 7.2, breaks compilation
New DRM panel API upstream.
drm_panel_init() → devm_drm_panel_alloc()
Redundant panel->base.dev and panel->base.funcs assignments removed
2026-06-29 09:52:19 +02:00
EvilOlaf 66b24f2342 temporary disable broken out-of-tree wifi drivers for kernel >=7.2 2026-06-29 09:52:19 +02:00
EvilOlaf 90cfbdfe83 rockchip64-7.2: adjust patches to fit changed upstream context 2026-06-29 09:52:19 +02:00
EvilOlaf 3e26e6fae7 rockchip64-7.2: remove patches landed upstream 2026-06-29 09:52:19 +02:00
EvilOlaf 461f7c87ac rockchip64: copy kernel patchset for 7.2 2026-06-29 09:52:19 +02:00
Ricardo Pardini 1d58fda989 u-boot/legacy/u-boot-radxa-rk35xx: change a file here to force all rk vendor u-boots to rebuild 2026-06-28 21:27:44 +02:00
Ivan Podogov 9ba3176edb rockchip64-7.1: Enable 1 GHz frequency for Panthor (from Kwiboo)
- `git fetch https://github.com/Kwiboo/linux-rockchip.git next-20260619-rk35xx-scmi-gpu-clk:kwiboo-next-20260619-rk35xx-scmi-gpu-clk`
- `git format-patch 3ce97bd3c4f18608335e709c24d6a40e7036cab8..kwiboo-next-20260619-rk35xx-scmi-gpu-clk--for-armbian-20260628 --stdout`
- rewritten
2026-06-28 21:11:03 +02:00
Igor Pecovnik 052bdbd622 rock-s0: drop u-boot v1.1 MMC patch that can't apply to v2026.07
The carried board patch 1120-mmcBootOnRockS0v1-1 fails to apply on v2026.07
(Hunk #1 FAILED at 5), aborting the whole uboot-rock-s0 build. u-boot restructured
rk3308-rock-s0-u-boot.dtsi (already in v2025.04+): the node was renamed
&sdmmc -> &sdmmc_2030 and new nodes (&gpio4, &sdmmc_2030) were inserted, so the
patch context no longer matches. Upstream now also ships
`&sdmmc_2030 { bootph-pre-ram; }`, covering the core SPL sdmmc access the patch
was mainly for.

A correct rebase would need the renamed node + verified pinctrl labels and, since
it's a Rock S0 v1.1 hardware fix (pwren RK_PD6 pull-down), validation on a v1.1
board — maintainer territory. Drop it for now so rock-s0 builds on v2026.07
(v2024.10 doesn't build on trixie at all). The only thing lost vs upstream is the
v1.1-specific SD pwren override.

@brentr: if Rock S0 v1.1 boards regress on SD/SPL boot, the pwren override needs
re-rebasing onto v2026.07's &sdmmc_2030 + verified pinctrl labels.

Signed-off-by: Igor Pecovnik <igor@armbian.com>
2026-06-28 21:08:16 +02:00
Igor Pecovnik cd23df6ef4 git-ref2info: support the gitproxy (git_cdn) source for Makefile version fetch
On runners that advertise a git_cdn proxy (GITPROXY_ADDRESS), GITHUB_MIRROR is
set to 'gitproxy' and GITHUB_SOURCE becomes the proxy base, so kernel/u-boot
sources look like http://host:port/org/repo. obtain_makefile_body_from_git had
no case for that and aborted with "Unknown git source '...'" (error 43),
breaking every artifact build on those runners (e.g. rack-ryzen, geekom).

The git_cdn proxies git clones, not raw HTTP, and the Makefile version is the
upstream one regardless of mirror — so fetch the Makefile from github's raw
endpoint directly, parsing org/repo from the proxy URL (same scheme://host/org/repo
shape as github.com).

Signed-off-by: Igor Pecovnik <igor@armbian.com>
2026-06-28 20:26:53 +02:00
Ricardo Pardini 654bb1d7ff rockchip64_common: collapse line-continued expansion exec to single line
- reason is very sad, see #10055
2026-06-28 17:10:49 +02:00
Igor Pecovnik f1998193b8 rk3308: pin fdt/ramdisk load addresses for v2026.07 (fix booti FDT)
With u-boot bumped to v2026.07, the board boots far enough to load kernel+initrd
+dtb but booti aborts: "Could not find a valid device tree". The new u-boot's
default load addresses are tighter — the ~38MB kernel Image overlaps and clobbers
the dtb at fdt_addr_r=0x01f00000 before booti reads it.

Confirmed on hardware (rockpi-s, u-boot console): relocating fdt_addr_r=0x08000000
and ramdisk_addr_r=0x0a000000 (both clear of the kernel, both within 256MB) boots
cleanly. Pin them via armbianEnv.txt, which boot.cmd env-imports before loading
the dtb/ramdisk. Applied to both rk3308 boards (rockpi-s, rock-s0).

Signed-off-by: Igor Pecovnik <igor@armbian.com>
2026-06-28 17:10:29 +02:00
Igor Pecovnik 8db509b7d7 rock-s0: bump u-boot v2024.10 -> v2026.07 (build on trixie hosts)
Same trixie/SWIG-4.3 failure as rockpi-s: u-boot v2024.10's pre-generated
pylibfdt wrapper won't compile on trixie, killing the uboot artifact. Bump to
v2026.07 (the rk3308 tag luckfox-rk3308b-nova already builds).

rock-s0 carries one board patch (1120-mmcBootOnRockS0v1-1: SPL MMC access on
Rock S0 v1.1) — copied to patch/u-boot/v2026.07/board_rock-s0/ so the boot fix
isn't lost. Keeps rock-s0-rk3308_defconfig, uart0 DDR blob, BL31, binman.

Needs verification: the carried patch must still apply to v2026.07's
rk3308-rock-s0-u-boot.dtsi (rebase if context shifted, or drop if upstreamed),
plus an on-target boot/MMC check.

Signed-off-by: Igor Pecovnik <igor@armbian.com>
2026-06-28 17:10:29 +02:00
Igor Pecovnik 569ff249ab rockpi-s: bump u-boot v2024.10 -> v2026.07 (build on trixie hosts)
u-boot v2024.10 fails to build on Debian trixie hosts: the pre-generated
scripts/dtc/pylibfdt/libfdt_wrap.c is incompatible with trixie's SWIG 4.3
("too few arguments to function 'SWIG_Python_AppendOutput'"), so scripts_dtc
dies and the uboot artifact never builds.

Bump to v2026.07, matching luckfox-rk3308b-nova which already builds the same
rk3308 SoC on this u-boot tag — so the SoC is supported and the pylibfdt wrapper
is SWIG-4.3-clean. rockpi-s has no board-specific u-boot patches, keeps its own
rock-pi-s-rk3308_defconfig, uart0 DDR blob, BL31 and binman scenario; the shared
v2026.07 patchdir's board_luckfox-* patches are board-scoped, so rockpi-s won't
pick them up.

Needs an on-target boot check (uart0 console, RAM).

Signed-off-by: Igor Pecovnik <igor@armbian.com>
2026-06-28 17:10:29 +02:00
Ricardo Pardini 27dde349b9 u-boot: debug produced binaries with dumpimage -l as well as binwalk
- still chasing why rk vendor u-boot alledgedly produces nonworking bins when built on non-Jammy hosts
- see #9897 and #10055
2026-06-28 17:10:17 +02:00
Igor Pecovnik c669c8738e rootfs: strip mmdebstrap's apt proxy so it doesn't ship in the image
When a CI runner sets APT_PROXY_ADDR (from the runner map, or derived from an
ambient http_proxy), rootfs-create routes mmdebstrap's bootstrap through it via
--aptopt. mmdebstrap persists that aptopt as /etc/apt/apt.conf.d/99mmdebstrap
inside the target rootfs — and nothing removed it, so the build-host proxy
(e.g. http://10.0.40.2:3142) shipped in the final image. On the user's machine
that proxy is meaningless/unreachable, so their apt update hangs or fails.

Confirmed in a published rootfs artifact: 99mmdebstrap contained
`Acquire::http::Proxy "http://10.0.40.2:3142";`.

Remove it in the existing post-mmdebstrap cleanup, next to the 99-armbian-sandbox
removal (also build-time only).

Signed-off-by: Igor Pecovnik <igor@armbian.com>
2026-06-28 15:30:08 +02:00
Rosen Penev 666402be91 mvebu: fix some dmesg warnings for Helios4
Mostly missing regulators.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2026-06-28 10:42:37 +02:00
Rosen Penev aad7b75a6f mvebu: remove 20-pcie-bridge-emul.patch
A better version of this was already merged upstream as c453bf6f9b32. No
need to duplicate logic.

That's in kernel 5.18.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2026-06-28 10:42:37 +02:00
Igor Pecovnik 39642251f8 kernel configs: enable NFS client on the 3 kernels that lacked it (NFS rootfs)
A scan for NFS-root capability found 3 of 107 kernel configs with no NFS client
at all, so a board on those kernels can't mount an NFS root (the initramfs has no
nfs.ko to load):

  - linux-rockchip-vendor          (network-filesystems menu was off)
  - linux-sun55iw3-syterkit-legacy (no network-filesystems lines)
  - linux-sun60iw2-vendor          (# CONFIG_NFS_FS is not set)

Enable CONFIG_NETWORK_FILESYSTEMS + CONFIG_NFS_FS=m (+ NFS_V3_ACL, NFS_V4),
matching the mainline configs. NFS_V3 comes on by default; the initramfs (BOOT=nfs)
brings up the NIC, so IP_PNP isn't required. Every kernel config now ships an NFS
client.

Signed-off-by: Igor Pecovnik <igor@armbian.com>
2026-06-28 10:42:00 +02:00
Ricardo Pardini eda2d0d773 rk35xx-vendor: .config: rewrite, no changes
- `SND_SOC_ES8328_I2C` _implies_ `SND_SOC_ES8328`
2026-06-28 10:41:37 +02:00
Ricardo Pardini 07a7f4182e rockchip64: current/edge: enable REALTEK_PHY_HWMON
- this gives us temperature monitoring for Realtek PHYs, which get
  _real hot_ and sometimes are what's driving some boards to be warm
  instead of the SoC.

```
~# sensors r8169_0_100:00-mdio-0
r8169_0_100:00-mdio-0
Adapter: MDIO adapter
temp1:        +66.0°C  (high = +120.0°C)
```
2026-06-28 10:41:37 +02:00
Ricardo Pardini 87e381a9d2 rockchip64: current/edge: rewrite .config, no changes
- `CONFIG_SND_SOC_DMIC` is actually implied by `SND_SOC_RK3399_GRU_SOUND`
  - Fixes dbfd12b55d where it was manually added without rewrite
2026-06-28 10:41:37 +02:00
Igor Pecovnik cac4b515cd gha-matrix: add short hash-free name to matrix items for job labels
The GHA job name was `matrix.desc`, which for artifacts is `name=version`
(version carrying the source/patch/config/revision content hashes), e.g.
`uboot-bananapim7-vendor=2017.09-S39cd-P1ff0-...`. Those hashes are the OCI
cache identity, but in the Actions UI they're just noise.

Add a separate, hash-free `name` to every matrix item (artifacts:
`artifact_name`; images: `image_file_id`) so workflows can label jobs with the
readable name while `desc`/`invocation` keep the full hashed identity. Backward
compatible: `desc` is unchanged, this only adds a field.

Signed-off-by: Igor Pecovnik <igor@armbian.com>
2026-06-28 10:41:11 +02:00
Igor Pecovnik e096863bef boards: numaker - set maintainer to author (TuAFBogey) + KERNEL_TEST_TARGET
Clears the two board-config validation warnings: BOARD_MAINTAINER was empty
(orphan) and KERNEL_TEST_TARGET was missing. TuAFBogey is the board's original
contributor; vendor is its only kernel target.

Signed-off-by: Igor Pecovnik <igor@armbian.com>
2026-06-28 10:40:41 +02:00
Igor Pecovnik abf37561bb boards: declare empty BOARD_MAINTAINER on numaker-iot-ma35d16f90
The inventory only warns when BOARD_MAINTAINER is absent; an explicit empty
value marks the board as unmaintained and silences the warning.

Signed-off-by: Igor Pecovnik <igor@armbian.com>
2026-06-28 10:40:41 +02:00
Igor Pecovnik 17cc3425f9 boards: declare inherited BOARDFAMILY/KERNEL_TARGET on ayn child boards
ayn-thor, ayn-odin2mini and ayn-odin2portal `source` ayn-odin2.csc and inherit
BOARDFAMILY (sm8550) and KERNEL_TARGET (current,edge) from it at build time. The
board-inventory parser (lib/tools/common/armbian_utils.py) scans the board file
statically and does not follow `source`, so it saw these as missing — emitting
"KERNEL_TARGET/BOARDFAMILY not found" warnings and, worse, leaving
BOARD_POSSIBLE_BRANCHES empty for ayn-thor/ayn-odin2mini, which drops them from
the build matrix.

Declare the inherited values explicitly so the board is self-describing for the
inventory. Purely additive: `source` already sets the same values at build time,
so build behaviour is unchanged. ayn-odin2portal keeps its local KERNEL_TARGET.

Signed-off-by: Igor Pecovnik <igor@armbian.com>
2026-06-28 10:40:41 +02:00
EvilOlaf 9a6ea452c4 rockchip64-7.1: rewrite patches 2026-06-27 16:10:40 +02:00
EvilOlaf 0b208a8612 rockchip64-6.18: rewrite patches 2026-06-27 16:10:40 +02:00
EvilOlaf ac92135a17 sunxi-7.0: rewrite patches 2026-06-27 16:10:40 +02:00
EvilOlaf 2c6de3969c sunxi-6.18: rewrite patches 2026-06-27 16:10:40 +02:00
SuperKali 6ab39ae412 kernel/rockchip64: fix RK3588 I2S MCLK clk_disable_unused regression
The backported GATE_GRF series registers the four I2S MCLK output gates
with flag 0, so clk_disable_unused() closes them at boot on boards that
drive the codec through the parent MUX, cutting analog audio. Mirror the
upstream fix and mark them CLK_IGNORE_UNUSED on 6.18 and 7.1.

Signed-off-by: SuperKali <hello@superkali.me>
2026-06-27 10:18:07 +02:00
Werner 08aeab2bb1 Revert "Enable 1 GHz frequency for Panthor on mainline (#10035)"
This reverts commit 29038d228f.
2026-06-27 08:55:35 +02:00
igorpecovnik 70db7e6c90 Automatic board configs status synchronise 2026-06-26 15:18:53 +02:00
Igor Pecovnik 7592104b9f data-sync-maintainers: summary list of CODEOWNERS users lacking write access
A CODEOWNERS entry only works if the user has write (push) access — otherwise
GitHub silently ignores it and never review-requests them. Add a final step that
cross-checks the generated CODEOWNERS individuals against the repo's push-capable
collaborators (paginated) and appends, to the workflow summary, the ones without
write access (so maintainers can grant access or drop the entry).

Degrades gracefully (notes "check skipped") if the token can't read collaborators;
org teams (@org/team) are excluded. Against the current repo this flags ~59 of the
CODEOWNERS users — entries that are currently dead.

Signed-off-by: Igor Pecovnik <igor@armbian.com>
2026-06-26 15:03:52 +02:00
Igor Pecovnik 61f1881632 codeowners: generate board section only (drop hardcoded owners)
Per request, the generated CODEOWNERS is now purely data-driven: drop the
hardcoded header owners (the default '* @igorpecovnik' and the *.md / .github/ /
lib/ / packages/ / tools/ section owners) so the file contains only the board
section derived from BOARD_MAINTAINER. Everything in it is now sourced from the
contacts DB and subject to the inactive-maintainer filter — no static entries.

Note: with the default owner gone, paths not matched by a board pattern have no
required reviewer (intended).

Signed-off-by: Igor Pecovnik <igor@armbian.com>
2026-06-26 15:03:52 +02:00
Igor Pecovnik 090bc56140 data-sync-maintainers: checkout the dispatched ref, not hardcoded main
The checkout step pinned `ref: main`, so a manual workflow_dispatch from a branch
still ran main's files (generate_CODEOWNERS.sh, board configs) — making it
impossible to test a change to those from a branch: the inactive maintainers got
flagged (that logic is in the workflow yaml, which DOES come from the branch) but
CODEOWNERS was regenerated by main's unfiltered script, so the auto-PR showed no
change.

Use `ref: ${{ github.ref_name }}`: the scheduled run (on main) is unchanged, while
a manual run from a branch checks out that branch and exercises its code.

Signed-off-by: Igor Pecovnik <igor@armbian.com>
2026-06-26 15:03:52 +02:00
Igor Pecovnik ae29bc7bc0 data-sync-maintainers: review cleanups (single jq pass, simpler filter)
Self-review of the inactive-maintainer change:

- Update maintainers: collapse the ~4 jq forks per record (name/boards/github +
  my days) into ONE jq pass emitting a US (0x1f) -joined row, read with
  IFS=$'\x1f'. A non-whitespace separator is required — IFS=$'\t' read collapses
  consecutive tabs, so an empty field (e.g. a null Maintaining) would shift the
  columns. Verified the new loop yields a byte-identical MAINTAINERS map and
  inactive list vs the old per-record loop against the live JSON. Also removes
  the inner board loop's variable that shadowed the outer record var, and skips
  empty board fields.
- generate_CODEOWNERS.sh: replace the echo|xargs|while-read filter pipe with a
  plain `for` over BOARD_MAINTAINER.
- Align the reset glob to include .csc (matches the write loop; behaviourally
  redundant since the write overwrites, but removes the inconsistency).

No behaviour change to the feature; pure cleanup + a latent empty-field hazard
avoided in the refactor.

Signed-off-by: Igor Pecovnik <igor@armbian.com>
2026-06-26 15:03:52 +02:00
Igor Pecovnik 9f83f90c09 codeowners: drop inactive maintainers (Days_since_last_activity >= 365)
Long-inactive maintainers are still listed in CODEOWNERS, so GitHub keeps
review-requesting them on PRs touching "their" board/kernel/u-boot paths — noise
they won't act on. The contacts DB exposes Days_since_last_activity per
maintainer; use it to stop pinging the inactive ones.

- data-sync-maintainers.yml: while reading the maintainers JSON, record every
  GitHub username idle >= MAINTAINER_INACTIVE_DAYS (default 365) to a file, and
  pass it to the CODEOWNERS step. BOARD_MAINTAINER is left untouched (they remain
  the board's maintainer of record); only CODEOWNERS pinging is affected.
- generate_CODEOWNERS.sh: load that inactive set and drop those usernames from
  the generated board-section owners. A board whose maintainers are ALL inactive
  emits no entry, so the default owner applies. Absent file => no filtering, so
  the script still works standalone.

Scope: only the generated board section — the hardcoded header owners (*, *.md,
.github/, lib/, tools/, …) are unchanged by design. Against the live JSON (126
maintainers) this drops 37 inactive ones from pings; all board-section owners are
JSON-sourced, so coverage is complete.

Signed-off-by: Igor Pecovnik <igor@armbian.com>
2026-06-26 15:03:52 +02:00
Ivan Podogov 29038d228f Enable 1 GHz frequency for Panthor on mainline (#10035)
Authored-by: Jonas Karlman <jonas@kwiboo.se>
2026-06-26 13:34:27 +01:00
Igor Pecovnik 1a30281a5e u-boot: v2026.04: own the rk3588 blueberry & mixtile DTs (drop kernel symlinks)
These two u-boot device trees were symlinks into the kernel patch archive:

  dt_upstream_rockchip/rk3588-blueberry-edge-v12-linux.dts
      -> ../../../kernel/archive/rockchip64-7.0/dt/...
  dt_upstream_rockchip/rk3588-mixtile-blade3.dts
      -> ../../../kernel/archive/rockchip64-6.18/dt/...

u-boot carries its own device tree — it does not consume the kernel's. The
symlink-shared-DT change (7ef9f60bf) coupled the u-boot build to the kernel
patch tree, so when the edge kernel archive moved (rockchip64-7.0 dropped, edge
is now 7.1) the blueberry symlink dangled and the u-boot artifact build failed:

  make[2]: No rule to make target
    'dts/upstream/src/arm64/rockchip/rk3588-blueberry-edge-v12-linux.dtb'

Restore both as real, self-contained files in the u-boot patch set (materialised
from the current board DT), so the u-boot DTs no longer depend on the kernel
archive and can't be broken by kernel-branch churn. mixtile content is unchanged
(its 6.18 target still resolved); blueberry takes the current edge content.

Signed-off-by: Igor Pecovnik <igor@armbian.com>
2026-06-26 07:20:21 +02:00
Igor Velkov e24d7fcb0b fix(docker): anchor hostname extraction to leading "Name:" only
`docker info` emits both `Username: <user>` (under `Server:`) and
`Name: <host>` near the bottom; the previous grep pattern `-i -e name:`
caught both, so on hosts where docker stores credentials we ended up with
`DOCKER_SERVER_NAME_HOST="<user> <host>"` after `cut + xargs` glued the
two matches together. The Darwin `case` dispatch downstream then failed
to recognise "Docker Desktop" / "Rancher Desktop", silently turning off
the loop-hack workarounds.

Anchor the grep to a leading-whitespace + literal `Name:` and take only
the first match (`-m1`). Pre-existing on main, surfaced during P2b review
by @coderabbitai.

Assisted-by: Claude:claude-opus-4.7
2026-06-25 23:14:23 +02:00
Igor Velkov 352f610fc8 (#9400 P2b) host: docker: replace seven echo|grep subshells with here-strings
Seven near-identical `echo "${DOCKER_INFO}" | grep -i -e <key>: | cut -d : -f 2 | xargs echo -n`
chains parse fields out of cached `docker info` output. Replace each with
`grep -i -e <key>: <<< "${DOCKER_INFO}" | cut -d : -f 2 | xargs echo -n`.

The here-string and `echo "${DOCKER_INFO}"` produce the same bytes on
stdin (one trailing newline), so grep, cut and xargs see identical input
and emit the same field value. The change drops one subshell + one echo
process per invocation; `get_docker_info_once` runs these in a tight
sequence at the top of every Docker-mode build.

Part of #9400 (P2b).

Assisted-by: Claude:claude-opus-4.7
2026-06-25 23:14:23 +02:00
Igor Velkov 4c6da5d66f style(shellfmt): docker.sh spacing (redirect, arithmetic, blank line)
Apply shellfmt's space-after-redirect (`2> /dev/null`), C-style for-loop
operator spacing (`((i = 2; i < ...))`), and collapse a stray double blank
line.

Heredoc bodies (the `cat <<- 'EOT'` wrapper/cron scripts) are left untouched
on purpose: shfmt re-indents them, which survives only because `<<-` strips
leading tabs; it bloats the diff for no functional gain, so it is kept out of
scope.

No behavior change.

Assisted-by: Claude:claude-opus-4.8
2026-06-25 23:14:23 +02:00
Igor Velkov 06a67e7912 (#9400 P2b) general: hash-files: replace echo|sha256sum subshells with here-strings
Replace three `echo "${var}" | sha256sum | cut -d' ' -f1` forms with
`sha256sum <<< "${var}" | cut -d' ' -f1`. Verified empirically that both
forms emit identical bytes (one trailing newline in both cases, same hash);
the form-equivalence is also the reason this group was originally excluded
from the #9400 P2b list — that exclusion has now been removed from #9400
because the trailing-newline concern does not apply (echo without -n and
the here-string redirection both append a single \n).

Eliminates one subshell + one external `echo` invocation per call.

For `function_bodies` the in-array `[@]` splat is swapped for `[*]` so
the array is joined into a single here-string token (IFS default = space).
Empirically equivalent to the prior `echo "${arr[@]}"` output.

Part of #9400 (P2b).

Assisted-by: Claude:claude-opus-4.7
2026-06-25 23:14:23 +02:00
Igor Velkov bce4fa4e89 (#9400 P2b) general: git-ref2info: replace echo|cut subshell with IFS=/ read
Replace three identical `$(echo "${git_source}" | cut -d/ -f4-5)` subshells
(in the gitverse.ru, gitee.com and github.com mirror branches) with bash-
native `IFS=/ read -r _ _ _ _gr_org _gr_repo _ <<< "${git_source}"`. Same
output: skip three leading components (scheme, empty, host), capture org
and repo, drop the rest.

Eliminates three echo+cut subshells per ref-resolution call.

Part of #9400 (P2b).

Assisted-by: Claude:claude-opus-4.7
2026-06-25 23:14:23 +02:00
Igor Velkov b4cae03bf1 (#9400 P2b) general: git: replace echo|sed subshell with prefix-trim
Replace the `echo "$url" | sed "s|^https://github.com/|${GITHUB_SOURCE}/|"`
form with a guarded bash-native prefix trim. The guard preserves the
sed-with-^ semantics: only URLs literally starting with the GitHub host are
rewritten; anything else (private mirrors, gitlab, etc.) is left alone.
Eliminates one subshell + the sed external on every fetch_from_repo call.

Part of #9400 (P2b).

Assisted-by: Claude:claude-opus-4.7
2026-06-25 23:14:23 +02:00
Igor Velkov 4074bc0f50 style(shellfmt): reformat git.sh submodule loop comment alignment
shellfmt collapses the extra spaces before the inline `# -> libfoo` and
`# -> libfoo.path` comments to its single-space rule. No behavior change.

Pure preparation for the following P2b commit; carried in the same PR so
the functional change diff is not contaminated with formatting noise.

Assisted-by: Claude:claude-opus-4.7
2026-06-25 23:14:23 +02:00
Igor Velkov c32d31affa (#9400 P2b) image: partitioning: replace echo|awk subshell with parameter expansion
Split the sfdisk version (e.g. "2.41.1") directly with `IFS=. read` and
format the numeric form (e.g. "024101") with `printf -v`, eliminating
the `echo | awk` subshell. Same observable output.

Each component is then stripped of any non-numeric suffix (e.g.
"2.41-rc1" -> minor "41", not "41-rc1") before the printf so we don't
bomb under `set -e` on prerelease util-linux builds; the prior
`awk -F. '{printf "%d%02d%02d"}'` quietly accepted the numeric prefix,
and we keep that tolerance here.

Spotted by @chatgpt-codex-connector on PR #161 (iav/armbian fork pre-review).

Part of #9400 (P2b).

Assisted-by: Claude:claude-opus-4.7
2026-06-25 23:14:23 +02:00