| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
desktops: replace legacy config/desktop/ tree with armbian-config module_desktops Desktop builds no longer synthesise a per-DE, per-release, per-appgroup package list from config/desktop/*/environments/*/config_base/packages plus config/desktop/*/appgroups/*/packages. Instead, rootfs-create.sh calls `armbian-config --api module_desktops install de=$DESKTOP_ENVIRONMENT tier=$DESKTOP_TIER mode=build` inside the chroot, and armbian-config's YAML-driven module_desktops assembles the install from its tools/modules/desktops/yaml/*.yaml definitions at build time. * config/desktop/ tree (hundreds of config_base/packages, postinst, create_desktop_package.sh, architectures, support files) is deleted wholesale. The source of truth for desktop packages, branding, tiers, custom repos, and per-arch/per-release overrides now lives in armbian/configng under tools/modules/desktops/. * interactive_desktop_main_configuration in config-desktop.sh rewritten: clones armbian-configng to cache/sources/, runs the standalone Python parser for the DE list, shows the menu with a [CSC] marker for community-maintained DEs, collects DESKTOP_TIER (minimal / mid / full). Menu filters on the parser's --status flag: 'supported' by default, 'supported,community' under EXPERT. * rootfs-create.sh installs armbian-config via apt + runs `module_desktops install mode=build` while the Armbian apt repo is still attached, so apt.armbian.com's <release>-utils and <release>-desktop components (armbian-config itself, firefox, chromium, GNOME-branded bits) are reachable. * aggregation.py simplified: the per-appgroup fan-out is gone, so the rootfs package list no longer tries to resolve appgroup paths that don't exist anymore. * Redundant display-manager disable was in distro-agnostic.sh to work around the old post-cache DM auto-enable; module_desktops in mode=build already handles srv_disable internally. Drop the duplicate. * Misc chroot hygiene: systemd disable noise suppressed where the service never existed in the chroot; library-functions.sh regenerated to match the new loader surface. No backwards-compat yet for users passing legacy DESKTOP_ENVIRONMENT_CONFIG_NAME / DESKTOP_APPGROUPS_SELECTED — that comes in a follow-up commit in this PR. | 4 个月前 | |
(#9400 P1b) Replace unsafe eval with declare -g and nameref (#9461) * (#9400 P1b) cli: utils-cli: replace eval with declare -g eval "declare -g $name=\"$value\"" is equivalent to the safer declare -g "${name}=${value}" which avoids code injection risk. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * (#9400 P1b) configuration: interactive: replace eval with declare -g Two eval calls in set_interactive_config_value(): - eval "$1"='$2' → declare -g "${1}=${2}" - eval "ARMBIAN_INTERACTIVE_CONFIGS[${1}]"='$2' → direct array assignment Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * (#9400 P1b) configuration: change-tracking: replace eval with nameref The original code used eval to read an array variable with a dynamic name: eval "var_value=\"\${${var_name}[@]}\"" # sorry eval works, but it executes arbitrary code — if $var_name were ever a crafted string, it could inject commands. bash 4.3+ nameref (local -n) creates an alias to the variable named in $var_name without executing any code: local -n _ct_arr_ref="${var_name}" var_value="${_ct_arr_ref[*]}" unset -n _ct_arr_ref unset -n removes only the alias (not the referenced array), preventing "already a nameref" warnings on subsequent loop iterations. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * (#9400 P1b) artifacts-obtain: replace eval with nameref --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> | 4 个月前 | |
shellfmt: run lib/tools/shellfmt.sh, no changes | 2 个月前 | |
shellfmt: run lib/tools/shellfmt.sh, no changes | 2 个月前 | |
fix(interactive): parse case alternatives in get_kernel_info_for_branch (#8957) Fixes #8957. The awk parser in get_kernel_info_for_branch() searched the family conf for `^[[:space:]]*<branch>\)`, which matches a single-pattern case label like `current)` but NOT a case label with alternation like `vendor | vendor-rt)`. With no match, the function returned an empty description and the menu fell back to a hardcoded label ("Vendor BSP kernel" for the vendor branch), so any custom KERNEL_DESCRIPTION inside an alternation block was silently lost. Fix: extract the label (everything before the closing paren), split on `|` (with optional surrounding whitespace) and check each alternative against the requested branch. Real-world impact: families/k3.conf and families/k3-beagle.conf both use `vendor | vendor-rt)` to share kernel/u-boot config between the two branches. Their `KERNEL_DESCRIPTION` was effectively dead code before this fix. Single-label labels (`vendor-edge)`, `current)` etc.) continue to match — they are just an n=1 case of the new alternation logic. Assisted-by: Claude:claude-opus-4.7 | 3 个月前 | |
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> | 4 天前 | |
menu: draw dialog borders with Unicode box characters dialog draws its borders through the ncurses alternate charset: the VT100 switch ESC(0 followed by letters. PuTTY (default TERM=xterm), mosh and hterm ignore that switch in UTF-8 mode, so the borders show up as letters (lqqqk, x, mqqqj). Set NCURSES_NO_UTF8_ACS=1 for the dialog call. ncurses then emits U+2500 box-drawing characters directly; every UTF-8 terminal renders those. Outside UTF-8 locales ncurses ignores the variable, so non-UTF-8 terminals keep the alternate charset. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> | 6 天前 | |
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 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 4 个月前 | ||
| 4 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 3 个月前 | ||
| 4 天前 | ||
| 6 天前 | ||
| 8 个月前 |