| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
armbian-zsh: load bundled plugins robustly (fixed path + deferred highlight) Address review on armbian-plugins.zsh: - Load from the fixed install path $ZSH/custom/plugins instead of $ZSH_CUSTOM, which a user may repoint elsewhere. - Stop relying on custom-file filename order to make zsh-syntax-highlighting last (a later custom file could add widgets after it). Defer it to a one-shot precmd hook that fires just before the first prompt — after all init, including the user's ~/.zshrc — then removes itself. zsh-autosuggestions still loads immediately (it must precede highlighting). Verified on zsh 5.9 with stub plugins: autosuggestions loads at source time, highlighting loads on the first precmd and the hook self-removes. Signed-off-by: Igor Pecovnik <igor@armbian.com> | 18 天前 | |
wireless: fix Realtek USB drivers against 6.6.157 kernel-mvebu-legacy stopped building. Six out-of-tree Realtek USB drivers fail the same way: usb_intf.c:153:17: error: 'struct usb_driver' has no member named 'drvwrap' 153 | .usbdrv.drvwrap.driver.shutdown = rtw_dev_shutdown, 6.6.157 backported the removal of struct usbdrv_wrap into the 6.6 LTS series: include/linux/usb.h replaced struct usbdrv_wrap drvwrap; with struct device_driver driver; v6.6.156 still has it, v6.6.157 does not. 5.10.246, 5.15.202 and 6.1.165 all still have it, so 6.6 is the only stable series affected so far. Five of the drivers already guard the member with LINUX_VERSION_CODE < KERNEL_VERSION(6, 8, 0) which was written for mainline, where the removal landed in 6.10. A stable backport slips underneath that test: 6.6.157 is below 6.8 but has no drvwrap. rtl8723du has no upper bound at all. Add a carve-out for the 6.6.157+ range to each driver's existing expression, leaving the rest of the condition untouched. Verified with the preprocessor against ten version points, matched against the actual presence of drvwrap in each stable tree: 5.15.202, 6.1.165, 6.6.156, 6.7.0 and 6.7.12 still select drvwrap; 6.6.157, 6.6.200, 6.8.0, 6.12.68 and 6.18.52 select the plain driver member. All six patches apply to their pinned commits with zero fuzz. Signed-off-by: Igor Pecovnik <igor@armbian.com> | 3 天前 | |
| 17 天前 | ||
imx8ulp: reduce ATF log level Set ATF_LOG_LEVEL=20 to silence BL31 SCMI/upower INFO spam, honor it in compile_atf, and hash ATF vars in uboot artifacts. Use quiet loglevel=4 in uEnv and lower the kernel default console loglevel to 4. | 1 个月前 | |
shellfmt: run lib/tools/shellfmt.sh, no changes | 2 个月前 | |
drop `find_toolchains`, `SKIP_EXTERNAL_TOOLCHAINS` and all `$toolchain` `PATH` injections - we've had SKIP_EXTERNAL_TOOLCHAINS=yes for ~5 years now - drop all usages, mostly through `find_toolchains()` - drop all manual PATH env injections (we've centralized if ever needed) | 7 个月前 | |
chore: update copyright years to 2026 Update all copyright notices in shell scripts from 2025 to 2026. ## Changes - **Igor Pecovnik**: 2013-2025 → 2013-2026 (129 files) - **Ricardo Pardini**: 2023-2025 → 2023-2026, 2020-2025 → 2020-2026 (5 files) ## Additional Improvements Also updated the backtitle in `lib/functions/configuration/interactive.sh`: - Changed title from "Armbian building script" to "Armbian Linux build framework" - Removed docs link for cleaner display - Uses dynamic year calculation with separate declaration (fixes shellcheck SC2155) | 8 个月前 | |
kernel config hash: ignore modifications the source config already declares The kernel artifact version mixes in a hash of every config modification the hooks announce, so a build with different modifications lands on a different version. Nothing compares those announcements against the config file they are applied to: a hook that sets an option to the value the source config already carries produces a byte-identical .config, yet still moves the version and thus cuts the build off from the published kernel debs. Compare each announced `OPTION=value` against the source config text before hashing and drop the ones that match, so identical explicit settings hash identically whether they come from the config file or from a hook. Announcements are canonicalized to the CONFIG_ prefix first. scripts/config accepts an option name either way, so both spellings have to collapse to one key before the last-assignment-wins reduction; otherwise `FOO=y` overridden by a later `CONFIG_FOO=n` keeps both entries in the hash. This covers only options stated literally in one of those two places. An option that ends up enabled through a Kconfig dependency rather than a literal line still splits the version; detecting that needs `make`, which version calculation deliberately runs without. Every kernel family changes version once. Even with no extension in play, the core Armbian hooks re-announce options the config file already carries -- 237 of 334 announcements are dropped on odroidn2/edge -- so the `.config hook hash` moves everywhere. One rebuild, then versions settle. Measured on odroidn2/edge (meson64, 7.1.7) with a hook setting IP_PNP=y, TUN=y and NFS_FS=m -- the exact values already in linux-meson64-edge.config. Before: .config hook hash 1c3a9337c4583b24 without the hook, 029b15474d885e57 with it. After: 76b3aeb8f7fb12d7 in both cases. | 29 天前 | |
stubble: parametrize extra DTBs via EXTRA_STUBBLE_DEVICETREES Keep board-specific stubble DTBs in the family file so changing them does not bump the shared kernel bash hash for every LINUXFAMILY. Co-authored-by: Cursor <cursoragent@cursor.com> | 1 个月前 | |
chore: update copyright years to 2026 Update all copyright notices in shell scripts from 2025 to 2026. ## Changes - **Igor Pecovnik**: 2013-2025 → 2013-2026 (129 files) - **Ricardo Pardini**: 2023-2025 → 2023-2026, 2020-2025 → 2020-2026 (5 files) ## Additional Improvements Also updated the backtitle in `lib/functions/configuration/interactive.sh`: - Changed title from "Armbian building script" to "Armbian Linux build framework" - Removed docs link for cleaner display - Uses dynamic year calculation with separate declaration (fixes shellcheck SC2155) | 8 个月前 | |
chore: update copyright years to 2026 Update all copyright notices in shell scripts from 2025 to 2026. ## Changes - **Igor Pecovnik**: 2013-2025 → 2013-2026 (129 files) - **Ricardo Pardini**: 2023-2025 → 2023-2026, 2020-2025 → 2020-2026 (5 files) ## Additional Improvements Also updated the backtitle in `lib/functions/configuration/interactive.sh`: - Changed title from "Armbian building script" to "Armbian Linux build framework" - Removed docs link for cleaner display - Uses dynamic year calculation with separate declaration (fixes shellcheck SC2155) | 8 个月前 | |
u-boot: get the initial bare git tree from a premade ORAS gitball - compile_kernel has pulled a premade git tree from ghcr.io for a while; u-boot has the identical worktree architecture but was still cold-cloning mainline on every empty cache. - The producer side (armbian/shallow) now publishes a single tree seeded with mainline u-boot -- 'master' plus all 533 tags, which is what makes the 'tag:vYYYY.MM' boards a cache hit -- and Radxa's next-dev* branches under 'radxa/*'. Measured: 387 MiB, one packfile. This pulls it. - There is no shallow/full decision for u-boot and so no interactive prompt; one complete tree serves every board. Every *other* u-boot fork Armbian builds (TI, SolidRun, NXP, Xilinx, hardkernel, orangepi-xunlong, CoreELEC, ...) keeps fetching into this same shared tree -- not seeded, but landing on top of mainline's history, so those fetches stay small. - The download/extract/marker logic moves to general/git-oras-tree.sh, taking explicit arguments rather than the five outer-scope variables that kept it kernel-only. kernel_prepare_bare_repo_from_oras_gitball becomes a wrapper (keeping its guards, which assert the decide-function ran) and download_git_kernel_gitball_via_oras is gone, single caller. - The helper adds one thing the Kernel version did not have: replacing a bare tree orphans every worktree registered against it, and fetch_from_repo then dies at git.sh:201, "Bare repo worktree gitdir not found". So the worktree directory's *contents* are purged alongside. Contents only -- these are Docker mountpoints and removing the directory itself is EBUSY in-container. This also fixes the same latent failure on the Kernel path. - `GIT_ORAS_TARBALLS_SHALLOW_BASE_REF` (kernel and u-boot alike) resolves the long-standing "@TODO allow changing this" on base_oras_ref. It selects a mirror, not content. Use if you need to work on the tarballs themselves or use a separate source. - Assisted-by: Claude Opus 5 <noreply@anthropic.com> | 8 天前 | |
u-boot: get the initial bare git tree from a premade ORAS gitball - compile_kernel has pulled a premade git tree from ghcr.io for a while; u-boot has the identical worktree architecture but was still cold-cloning mainline on every empty cache. - The producer side (armbian/shallow) now publishes a single tree seeded with mainline u-boot -- 'master' plus all 533 tags, which is what makes the 'tag:vYYYY.MM' boards a cache hit -- and Radxa's next-dev* branches under 'radxa/*'. Measured: 387 MiB, one packfile. This pulls it. - There is no shallow/full decision for u-boot and so no interactive prompt; one complete tree serves every board. Every *other* u-boot fork Armbian builds (TI, SolidRun, NXP, Xilinx, hardkernel, orangepi-xunlong, CoreELEC, ...) keeps fetching into this same shared tree -- not seeded, but landing on top of mainline's history, so those fetches stay small. - The download/extract/marker logic moves to general/git-oras-tree.sh, taking explicit arguments rather than the five outer-scope variables that kept it kernel-only. kernel_prepare_bare_repo_from_oras_gitball becomes a wrapper (keeping its guards, which assert the decide-function ran) and download_git_kernel_gitball_via_oras is gone, single caller. - The helper adds one thing the Kernel version did not have: replacing a bare tree orphans every worktree registered against it, and fetch_from_repo then dies at git.sh:201, "Bare repo worktree gitdir not found". So the worktree directory's *contents* are purged alongside. Contents only -- these are Docker mountpoints and removing the directory itself is EBUSY in-container. This also fixes the same latent failure on the Kernel path. - `GIT_ORAS_TARBALLS_SHALLOW_BASE_REF` (kernel and u-boot alike) resolves the long-standing "@TODO allow changing this" on base_oras_ref. It selects a mirror, not content. Use if you need to work on the tarballs themselves or use a separate source. - Assisted-by: Claude Opus 5 <noreply@anthropic.com> | 8 天前 | |
docker/riscv64: fix cross-compiler availability for generate-dockerfile (#9589) * docker: skip unavailable cross-compilers on riscv64 hosts When generating Dockerfiles on native riscv64 hosts, skip cross-compiler packages (gcc-x86-64-linux-gnu, gcc-aarch64-linux-gnu, gcc-arm-linux-*) that don't exist in riscv64 package repositories. This fixes generate-dockerfile failures on riscv64 hosts that tried to install non-existent cross-compilation toolchains. Signed-off-by: Igor Pecovnik <igor@armbian.com> * docker: detect host architecture for cross-compiler selection When generating Dockerfiles, detect the actual host architecture using dpkg --print-architecture and pass it to early_prepare_host_dependencies. This ensures that cross-compiler packages that don't exist on certain architectures (e.g., riscv64) are properly skipped during Dockerfile generation. Signed-off-by: Igor Pecovnik <igor@armbian.com> * docker/riscv64: fix cross-compiler availability checks Fix cross-compiler package selection for riscv64 hosts in both Docker generation and extensions: - docker.sh: Detect host architecture and pass it to dependency resolution functions - extensions: Check host_arch and skip cross-compilers unavailable on riscv64 (g++-aarch64-linux-gnu, gcc-arm-linux-gnueabi) This fixes generate-dockerfile failures on native riscv64 hosts where cross-compilation toolchains for other architectures don't exist in the package repositories. Signed-off-by: Igor Pecovnik <igor@armbian.com> * docker/riscv64: skip mvebu64 32-bit compiler on riscv64 hosts Same pattern as sunxi-tools.sh and arm64-compat-vdso.sh — the mvebu64 family unconditionally adds gcc-arm-linux-gnueabi via the add_host_dependencies__mvebu64_add_32_bit_c_compiler hook, which fails on riscv64 hosts (the 32-bit ARM cross-compiler is not available in Debian/Ubuntu RISC-V repositories). Guard the dependency addition with a host_arch check, emit a warn alert when skipping. mvebu64 boards (helios64, macchiatobin etc.) are still built normally on amd64/arm64 hosts. Assisted-by: Claude:claude-opus-4.7 * extensions/c++: fail fast if arm64 cross-compiler declared but missing Mirror arm64-compat-vdso.sh: add a host_dependencies_ready hook that, on hosts where the arm64 c++ cross-compiler is declared (i.e. not riscv64), asserts the g++-aarch64-linux-gnu binary (aarch64-linux-gnu-g++) is actually present after the dependency phase, and errors early otherwise. Signed-off-by: Igor Pecovnik <igor@armbian.com> * kernel: fail fast with clear message when (cross-)compiler is missing Per @iav's riscv64 testing on #9589: cross-building an arm64 target on a riscv64 host silently skips the unavailable gcc-aarch64-linux-gnu at the host-dependency phase, then dies deep in kernel_determine_toolchain with a cryptic "env: 'aarch64-linux-gnu-gcc': No such file or directory" (Error 127). Add a command -v pre-check before the -dumpversion probe so the missing toolchain surfaces as a readable, actionable error naming the compiler, the target ARCH and the host arch. It checks the actually-resolved compiler, so clang builds validate clang (not the gcc) and native builds are unaffected. Signed-off-by: Igor Pecovnik <igor@armbian.com> --------- Signed-off-by: Igor Pecovnik <igor@armbian.com> Co-authored-by: Igor Velkov <325961+iav@users.noreply.github.com> | 1 个月前 | |
introduce parallel patch rewriting | 1 个月前 | |
kernel: add stubble support | 2 个月前 | |
shellfmt: run lib/tools/shellfmt.sh, no changes | 2 个月前 | |
u-boot: get the initial bare git tree from a premade ORAS gitball - compile_kernel has pulled a premade git tree from ghcr.io for a while; u-boot has the identical worktree architecture but was still cold-cloning mainline on every empty cache. - The producer side (armbian/shallow) now publishes a single tree seeded with mainline u-boot -- 'master' plus all 533 tags, which is what makes the 'tag:vYYYY.MM' boards a cache hit -- and Radxa's next-dev* branches under 'radxa/*'. Measured: 387 MiB, one packfile. This pulls it. - There is no shallow/full decision for u-boot and so no interactive prompt; one complete tree serves every board. Every *other* u-boot fork Armbian builds (TI, SolidRun, NXP, Xilinx, hardkernel, orangepi-xunlong, CoreELEC, ...) keeps fetching into this same shared tree -- not seeded, but landing on top of mainline's history, so those fetches stay small. - The download/extract/marker logic moves to general/git-oras-tree.sh, taking explicit arguments rather than the five outer-scope variables that kept it kernel-only. kernel_prepare_bare_repo_from_oras_gitball becomes a wrapper (keeping its guards, which assert the decide-function ran) and download_git_kernel_gitball_via_oras is gone, single caller. - The helper adds one thing the Kernel version did not have: replacing a bare tree orphans every worktree registered against it, and fetch_from_repo then dies at git.sh:201, "Bare repo worktree gitdir not found". So the worktree directory's *contents* are purged alongside. Contents only -- these are Docker mountpoints and removing the directory itself is EBUSY in-container. This also fixes the same latent failure on the Kernel path. - `GIT_ORAS_TARBALLS_SHALLOW_BASE_REF` (kernel and u-boot alike) resolves the long-standing "@TODO allow changing this" on base_oras_ref. It selects a mirror, not content. Use if you need to work on the tarballs themselves or use a separate source. - Assisted-by: Claude Opus 5 <noreply@anthropic.com> | 8 天前 | |
u-boot: get the initial bare git tree from a premade ORAS gitball - compile_kernel has pulled a premade git tree from ghcr.io for a while; u-boot has the identical worktree architecture but was still cold-cloning mainline on every empty cache. - The producer side (armbian/shallow) now publishes a single tree seeded with mainline u-boot -- 'master' plus all 533 tags, which is what makes the 'tag:vYYYY.MM' boards a cache hit -- and Radxa's next-dev* branches under 'radxa/*'. Measured: 387 MiB, one packfile. This pulls it. - There is no shallow/full decision for u-boot and so no interactive prompt; one complete tree serves every board. Every *other* u-boot fork Armbian builds (TI, SolidRun, NXP, Xilinx, hardkernel, orangepi-xunlong, CoreELEC, ...) keeps fetching into this same shared tree -- not seeded, but landing on top of mainline's history, so those fetches stay small. - The download/extract/marker logic moves to general/git-oras-tree.sh, taking explicit arguments rather than the five outer-scope variables that kept it kernel-only. kernel_prepare_bare_repo_from_oras_gitball becomes a wrapper (keeping its guards, which assert the decide-function ran) and download_git_kernel_gitball_via_oras is gone, single caller. - The helper adds one thing the Kernel version did not have: replacing a bare tree orphans every worktree registered against it, and fetch_from_repo then dies at git.sh:201, "Bare repo worktree gitdir not found". So the worktree directory's *contents* are purged alongside. Contents only -- these are Docker mountpoints and removing the directory itself is EBUSY in-container. This also fixes the same latent failure on the Kernel path. - `GIT_ORAS_TARBALLS_SHALLOW_BASE_REF` (kernel and u-boot alike) resolves the long-standing "@TODO allow changing this" on base_oras_ref. It selects a mirror, not content. Use if you need to work on the tarballs themselves or use a separate source. - Assisted-by: Claude Opus 5 <noreply@anthropic.com> | 8 天前 | |
fix(patching): render patch summary at the reader's real terminal width The patch summary table forced a console width of COLUMNS-or-160 minus 12 and truncated the "Diffstat / files" and "Author / Subject" columns, so on a narrow terminal the right-hand columns were silently cut off — a wide and a narrow terminal showed different content for the same patch set, and two people comparing the same build could not see the same rows. Root cause and fix: - patching.py runs through `env -i` with its stdout piped to the logger, so it can never see the real terminal itself; the width only ever arrived via COLUMNS, which the wrappers hardcoded to 160. Capture the real terminal width once in cli_entrypoint (ARMBIAN_TTY_COLUMNS), before any logging redirects fd 1, and have the kernel and u-boot patching wrappers pass it as COLUMNS. It is left empty when stdout is not a tty, so piped/CI runs fall back to a fixed wide width for legible logs instead of a synthetic narrow one; an explicitly exported COLUMNS still wins. This removes the COLUMNS=$(tput cols) workaround. Docker relaunches run without --tty, so the container cannot measure the terminal; the host-captured width is forwarded through docker's COLUMNS env. - patching.py derives the width from that COLUMNS / the tty, floored at CONSOLE_MIN_WIDTH, and folds the summary columns (overflow="fold", small min_width) instead of truncating, so every column survives down to a 40-col terminal. The three width numbers are named constants. - The failed-patches table is rendered on a separate, fixed-width console: its Rejects cell uses rich's Syntax word-wrap, which elides long unbroken diff lines with an ellipsis on a narrow width, and those reject hunks are the whole point of that table — so it gets at least the fallback width, and the full terminal width when that is wider. Closes: #9734 Assisted-by: Claude:claude-opus-4.8 Signed-off-by: Igor Velkov <325961+iav@users.noreply.github.com> | 1 个月前 | |
uboot: demote int-conversion & incompatible-pointer-types to warnings GCC 14 (trixie toolchain) promotes -Wint-conversion and -Wincompatible-pointer-types from warnings to hard errors by default. Legacy/vendor u-boot trees hit these; e.g. the Realtek rtd1619b vendor u-boot (xpressreal-t3) fails to build: arch/arm/mach-realtek/mcp.c:121: error: ... makes integer from pointer without a cast [-Wint-conversion] drivers/phy/realtek/phy-rtk-usb3.c:645: ... [-Wint-conversion] drivers/mmc/rtkemmc_rtd161xb.c:2385: ... incompatible pointer type [-Wincompatible-pointer-types] -> uboot.sh:275, Error 2 The shared uboot_cflags_array already demotes the same GCC-14 class (implicit-function-declaration, implicit-int, array-parameter, ...); add these two so vendor trees keep building. A clean modern u-boot emits none of these, so it is unaffected. Signed-off-by: Igor Pecovnik <igor@armbian.com> | 1 个月前 | |
(#9400 P2a) compilation: utils-compilation: replace word-splitting cmdsub with mapfile Replace 'for dir in $(< /tmp/.overlayfs_wrapper_*)' — which uses unquoted command substitution and relies on word-splitting — with 'mapfile -t arr < file' followed by 'for dir in "${arr[@]}"'. The mapfile/array form preserves entries verbatim (one path per line) and handles paths with whitespace correctly. Part of the bash-safety cleanup in #9400 (P2a). Assisted-by: Claude:claude-opus-4.7 | 3 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 18 天前 | ||
| 3 天前 | ||
| 17 天前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 7 个月前 | ||
| 8 个月前 | ||
| 29 天前 | ||
| 1 个月前 | ||
| 8 个月前 | ||
| 8 个月前 | ||
| 8 天前 | ||
| 8 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 8 天前 | ||
| 8 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 3 个月前 |