Commit Graph

172 Commits

Author SHA1 Message Date
Igor Velkov
2d1784eff0 (#9400 P1a) lib/functions/configuration/main-config.sh: convert [ ] to [[ ]]
Replace POSIX `[ ]` with bash `[[ ]]` on six conditionals: file existence
checks, string comparisons, and -n tests. Also normalise `=` to `==` in
the string comparison.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-05 13:36:20 +01:00
Igor Velkov
1b74748622
Extension: ccache-remote — shared compilation cache via Redis/HTTP (#9369)
* add hook to allow customizing before kernel make env creation
* Hook runs in docker_cli_prepare_launch() just before DOCKER_EXTRA_ARGS
is processed, allowing extensions to add Docker arguments with a more
descriptive hook name than add_host_dependencies.
* Extension: ccache-remote

Enables ccache with remote Redis storage for sharing compilation cache across build hosts.

Features:
- Auto-discovery via Avahi/mDNS (ccache.local hostname)
- Explicit Redis server configuration via CCACHE_REMOTE_STORAGE
- Build statistics display at end of build (hit/miss/error rates)
- Support for both Docker and native builds
- Hooks for kernel and u-boot compilation environments

Documentation includes server setup instructions with security warnings,
client mDNS configuration, and cache sharing requirements.


* uboot: fix ccache environment and add extension hook

U-Boot build uses `env -i` which clears all environment variables.
CCACHE_DIR and CCACHE_TEMPDIR were not explicitly passed to make,
unlike kernel build (kernel-make.sh). This caused ccache to use
default directory instead of configured Armbian one, breaking
cache statistics and shared cache functionality.

Changes:
- Add CCACHE_DIR and CCACHE_TEMPDIR to uboot_make_envs
- Add uboot_make_config hook for extensions (similar to kernel_make_config),
  allowing modification of environment variables before compilation

* add long list of allowed ccache-related env vars
* set permissions to ccache files RW for everyone if cache not private
* ccache: add ccache_post_compilation hook for extensions
* ccache-remote: use ccache_post_compilation hook instead of cleanup handler

Show remote ccache stats after each compilation (kernel, uboot) via hook,
instead of once at the end via cleanup handler. Stats now shown even on
build failure.

* ccache: show stats with safe arithmetic
* ccache/uboot: improve code comments per review feedback

- uboot.sh: clarify ARMBIAN=foe workaround for dual-compiler scenario
- ccache-remote.sh: document that CCACHE_REDIS_CONNECT_TIMEOUT must be
  set before extension loads

* ccache-remote: mask storage URLs in logs

Mask CCACHE_REMOTE_STORAGE when emitting Docker env debug logs.

* ccache-remote: extract ccache_inject_envs() helper to deduplicate passthrough loops

Extract ccache_inject_envs() helper to deduplicate identical passthrough
loops in kernel and uboot make config hooks.

ccache-remote: rename functions to follow project naming conventions

Rename get_redis_stats and mask_storage_url to ccache_get_redis_stats
and ccache_mask_storage_url to follow project naming conventions.

ccache-remote: mask credentials in debug log output for passthrough loops

Mask CCACHE_REMOTE_STORAGE value through ccache_mask_storage_url() before
logging in both Docker env and make env passthrough loops to avoid leaking
credentials into build logs.

* ccache-remote: add HTTP/WebDAV backend and DNS discovery
* ccache-remote: move extension script into directory layout
* ccache-remote: add server setup docs and config files
* ccache-remote: validate Redis credentials in URLs
* ccache-remote: document Redis auth options and safe passwords

Add separate insecure config example for trusted networks.

Recommend URL-safe hex passwords and update setup docs.

* ccache-remote: improve Docker loopback handling and IPv6 host parsing
2026-03-01 01:18:35 +01:00
Ricardo Pardini
3b25162398 change-tracking: also track UBOOT_COMPILER & KERNEL_COMPILER 2026-01-21 01:39:50 +01:00
Igor Velkov
0a52e654ad Disable APA for sid too
(https://github.com/armbian/build/pull/9164#issuecomment-3756552792)
2026-01-16 08:10:03 -05:00
Igor Velkov
976b7ae524 Revert "lib / main-config.sh: enable APA extension for questing and resolute builds. Closes: #8966"
This reverts commit ca73176bd9.
2026-01-16 08:10:03 -05:00
Ricardo Pardini
947d349385 change-tracking: track most ATF related vars 2026-01-16 08:13:01 +01:00
Ricardo Pardini
c51b973217 drop UBOOT_USE_GCC, KERNEL_USE_GCC, ATF_USE_GCC completely
- also `CRUST_USE_GCC`
- those don't serve any purpose and cause confusion
2026-01-14 20:08:21 +01:00
Ricardo Pardini
6889c8c0a4 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)
2026-01-14 20:08:21 +01:00
tabris
eaac082190 kernel configs - enable EROFS as module, ditto overlayfs & F2FS 2025-12-29 09:16:28 +01:00
Igor Pecovnik
4d60ce08f2 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)
2025-12-25 12:03:34 +01:00
Rolf Leggewie
ca73176bd9 lib / main-config.sh: enable APA extension for questing and resolute builds. Closes: #8966 2025-11-20 19:38:24 +01:00
Igor Pecovnik
06dbd0074c Add Ubuntu 25.10 / 26.04 questing and resolute as csc build target, demote Bookworm to csc 2025-11-15 23:09:24 +01:00
Alex Simkin
b47445c990 add CRYPTROOT_AUTOUNLOCK option and fix CRYPTROOT for uefi builds
fixes #6280
2025-11-02 20:15:19 +01:00
Your Name
71bc75503f add description for .conf 2025-11-01 08:33:04 +01:00
Jianfeng Liu
20cb84200f uboot: set mainline uboot source with mirror 2025-09-11 11:18:13 +08:00
The-going
5fd4306699 main-config: Add gitverse repo for kernel source 2025-08-26 04:56:04 +08:00
The-going
f57e935603 MAINLINE_GOOGLE_MIRROR: fix to https://kernel.googlesource.com/*/linux-stable.git 2025-08-26 04:56:04 +08:00
Jianfeng Liu
fb363e8829 add initial loong64 support 2025-08-04 17:34:24 +08:00
Igor Pecovnik
4ae394cc4d Debian oldstable: drop security and backport repository from packages lists
It does not exists for Bullseye nor Buster, which are both anyway deprecated, but we have a user reqests.
2025-07-30 15:49:42 +02:00
Andrei Aldea
370bedb42d
Add option for number of threads used by build system (#8346)
* Add option for number of threads used by build system

Attempt to fix https://github.com/armbian/build/issues/6907

* Add CPUTHREADS to replace USEALLTHREADS

Defaults to 150% as was always the case, otherwise allow user to override number of threads.
2025-07-13 09:33:48 +02:00
Rolf Leggewie
e7b21f6d97 lib / main-config.sh: enable APA extension for sid Release builds 2025-07-08 01:42:38 +08:00
Werner
e9b20c3ed5
AE for cloud, add description for vendor (#8299)
* AE for cloud, add description for vendor

* fixes
2025-06-15 04:40:07 +00:00
Andrei Aldea
d824a53b58 Add Kernel Version Parsing and Custom Description
Adds ability to set custom descriptions for kernel inside family config and parses for kernel version.
2025-05-29 19:30:15 +02:00
Igor Pecovnik
a0c35c73a6 Add support for MOTD logo colors
- we might want to have different welcome colors for stable and nightly images
- this adds another branding option alongside with VENDOR, VENDORURL, VENDORSUPPORT, ...
2025-03-28 12:36:52 +01:00
Igor Pecovnik
c20fba9908 UEFI: add cloud kernel under cloud branch 2025-03-27 19:24:07 +01:00
Igor Pecovnik
1477b478c5 Add upstream release as csc target: Ubuntu plucky 25.04 2025-01-23 18:30:49 +01:00
Lane Jennison
de97c74ae5 disable ccache in a friendly way 2025-01-23 15:12:27 +03:00
Igor
4e33412ec2
Refactor armbian-config into install as external package (#7716)
* Refactor armbian-config into install as external package

- https://github.armbian.com/configng repository is always present
- package can still be removed from the install list

Since this tool will have deeper integration with Armbian, we should probably drop possibility to remove the tool from the list.

* Enable armbian-config as extension
2025-01-20 14:23:28 +01:00
amazingfate
09dc5b0d9d dockerproxy: update GHCR_MIRROR_ADDRESS 2025-01-17 16:35:28 +03:00
amazingfate
f4457a3df5 ghproxy: update GHPROXY_ADDRESS to ghfast.top 2025-01-15 11:36:45 +08:00
amazingfate
fcbad0b426 ghproxy: update GHPROXY_ADDRESS to ghgo.xyz 2024-12-22 00:03:46 +08:00
Ricardo Pardini
37d9200e6a hack: trixie has lost its software-properties-common package so get rid of it for all Debian releases
- https://tracker.debian.org/news/1579223/software-properties-removed-from-testing/
- that provides add-apt-repository, but we don't use that on Debian, hopefully
- move also cpufrequtils hack (which requires release) to specific function after userspace checks and when DISTRIBUTION is set
- `software-properties-gtk` if of course also gone, so remove that for desktop's sake
2024-11-12 11:42:13 +01:00
Werner
0afd94a84b
Deprecated WIREGUARD once and for all (#7452)
* remove wireguard

* remove wireguard

* remove wireguard

* Update armsom-sige1.csc

* Update hinlink-hnas.csc

* Update hinlink-h28k.csc

* Update hinlink-h66k.csc

* Update mangopi-m28k.csc

* Update hinlink-h68k.csc
2024-11-09 21:02:50 +01:00
user
502e139598 New option: CRYPTROOT_MAPPER. Make ROOT_MAPPER name for CRYPTROOT changable. 2024-11-05 16:35:02 +01:00
aiamadeus
ef193e5a03 main-config: add China mirror for ghcr.io 2024-11-01 08:29:36 +01:00
aiamadeus
76b36c4da5 main-config: update ghproxy mirror address
The ghproxy mirror is more reliable than gitclone, so set it to default.
2024-11-01 08:29:36 +01:00
Ricardo Pardini
55b87180b5 rootfs: don't use the Armbian repo when building rootfs from both GHA pipelines and CLI; fixes #7123
- Fixes: 71296430fa -- which only set `SKIP_ARMBIAN_REPO=yes` when `rootfs` cli shortcut used
  - GHA artifact pipelines are generic across all artifacts, and don't use the cli shortcuts
    - instead, they use the `artifact` shortcut, with the `WHAT=rootfs` parameter
    - so in GHA pipelines `SKIP_ARMBIAN_REPO=yes` was not taking effect
- rootfs artifact itself now enforces `SKIP_ARMBIAN_REPO` to be `yes` and makes it readonly
- also add `SKIP_ARMBIAN_REPO` to the general change-tracking for more clarity about configs and hooks etc
- add change tracking calls before/after generic artifact config adapter for even more clarity
2024-09-30 16:15:36 +02:00
Igor Pecovnik
56f5d6692c Revert setting default hostname to Armbian 2024-09-08 17:43:14 +02:00
Igor Pecovnik
59979a4573 Set default hostname to Armbian 2024-09-08 17:43:14 +02:00
Igor Pecovnik
8ee40367d4 Revert "Store list of preinstalled extensions EXTENSIONS and add VENDORPRETTYNAME to image fingerprint"
This reverts commit 9af94d5977.
2024-09-08 16:22:02 +02:00
Igor Pecovnik
9af94d5977 Store list of preinstalled extensions EXTENSIONS and add VENDORPRETTYNAME to image fingerprint 2024-09-03 22:03:04 +02:00
amazingfate
5bd400a726 add customized GHCR_MIRROR_ADDRESS support 2024-07-18 11:50:42 +02:00
ColorfulRhino
8056532684 cli: main-config: Move NETWORKING_STACK config after family config
This allows family configs to change the networking stack.
2024-07-08 16:54:36 +02:00
ColorfulRhino
3cca9dcaed Fix formatting in scripts by running lib/tools/shellfmt.sh version 3.8.0 2024-06-25 07:06:34 +02:00
Ricardo Pardini
8bc4335584 networking: main-config: introduce NETWORKING_STACK to control network exts; allow "none"; fix typo
- `NETWORKING_STACK` can be set to `none` (in config phase, pre-extensions) to not-add any networking extensions
- keep defaulting to systemd-networkd if BUILD_MINIMAL and NetworkManager otherwise
- fix typo in extension name
- add `NETWORKING_STACK` to change-tracking
2024-06-24 12:24:15 +02:00
ColorfulRhino
497c6dce0e extension: net: Refactor, fix and improve network extensions
- Rename extensions with "net-*" prefix
- Put the extensions into their own folder
- Split off time sync packages into their own extensions to be able to be used separately
- Put their config files into directories instead of using inline `cat <<- EOF >`
- Move some other NetworkManager related stuff into the extension
- Remove unneeded steps
- Install iproute2 by default on all images (for the `ip` command)
2024-06-20 19:59:52 +02:00
Igor Pecovnik
f4b160abde Move Network Manager bits into extensions
- use Chrony with Network Manager
- use timesync with systemd-networkd
- use NetPlan with Network manager only
- move command-not-found to CLI image only
- improve firstlogin ip detection
2024-06-20 19:59:52 +02:00
Alex
eb7b39cc3a
Enhance build times disabling command-not-found during rootfs creation (#6616) 2024-06-09 16:00:18 +02:00
Ricardo Pardini
40371934d2 lib & config: give shellcheck directions (to /dev/null for dynamic, to repo-relative path for static) for all sourced references
- in preparation for tightening the shellcheck severity level
  - it needs to be able to follow all sources; dynamic ones are ignored, static ones need root-relative prefix
2024-05-19 19:41:35 +02:00
Igor Pecovnik
514c6a48e8 Return Noble armhf arch as it works
- remove kinetic, lunar, mantic
- fix armhf sid, noble, oracular
2024-05-11 12:15:22 +01:00