Commit Graph

16873 Commits

Author SHA1 Message Date
Igor Pecovnik
63fe441107
fix: always publish main component even if utils/desktop are empty
This fixes the case where repositories like debs-beta only have packages
in the main/common component (e.g., sid with only kernel packages).
Previously, the merge command would skip publishing if both utils and
desktop repos were empty, resulting in an incomplete repository.

Now we always publish at minimum the main/common component, ensuring all
distributions with any packages get properly published.
2026-01-11 09:30:49 +01:00
Igor Pecovnik
72ec2b171b
feat: implement parallel repository management workflow
This commit implements a complete parallel repository management system
that allows building and publishing Debian repositories in parallel,
significantly reducing build time for multiple distributions.

- `update-main`: Builds common/main component once for all releases
- `update -R <release>`: Builds release-specific components in isolated DBs
- `merge`: Combines common + release-specific components into final repos

- Isolated databases (aptly-isolated-<release>) avoid locking during parallel builds
- Common component built once, not duplicated per release
- Release-specific components (utils, desktop) built independently
- Final merge combines all components with proper GPG signing

- Fixed GPG signing to target top-level Release files (dists/{release}/Release)
- Pool cleanup before publishing avoids "file already exists" errors
- Smart package import skips duplicates during merge
- Proper handling of empty repositories and missing components
- Improved error handling and logging throughout

1. update-main: Build common component (once)
2. update -R <release>: Parallel workers build release-specific components
3. merge: Combine all components and publish with GPG signatures

This enables GitHub Actions to run multiple release builders in parallel,
reducing total repository build time from hours to minutes.

Signed-off-by: Igor Pecovnik <igor@armbian.com>
2026-01-11 00:19:28 +01:00
Igor Pecovnik
d7a4c1b3ab Fix broken patch due to upstream changes, drop edge kernel as its not used 2026-01-08 21:38:09 +01:00
Ricardo Pardini
287931ac6e armbian-kernel: more eBPF-oriented options for userspace tooling 2026-01-08 19:40:54 +01:00
igorpecovnik
35be053fc1 Automatic board configs status synchronise 2026-01-08 19:29:12 +01:00
Ricardo Pardini
1d64ede95c grub: remove invalid hack for hvc0
- hvc0 (virtio console) used to be a challenge, but no longer, for a long time already
2026-01-08 19:28:55 +01:00
Ricardo Pardini
574abb9cad host-release: allow to build on resolute 2026-01-08 19:28:26 +01:00
Igor Pecovnik
4eac206ecf Fix rootfs compilation (dropping deprecated gtk2 engines), broken patch on meson64, series update 2026-01-08 19:27:48 +01:00
Ricardo Pardini
5baaad4e8d extensions/mtkflash: mtk-flash --no-erase-mmc1 landed upstream as --preserve-boot1
- of course, avoid a negation. example of how upstream is always best
2026-01-08 18:55:09 +01:00
EvilOlaf
ee4c79b19a rewrite everything
except patches adding overlays for sunxi and sunxi64
2026-01-08 17:58:43 +01:00
EvilOlaf
45aac305ac fix broken patch 2026-01-08 17:58:43 +01:00
EvilOlaf
e38d028214 sunxi-current: bump to 6.12.64 2026-01-08 17:58:43 +01:00
juanesf
2c025ef929 sun55iw3.conf bump u-boot to v2026.01 (final)
Based on (https://github.com/armbian/build/pull/9179)
2026-01-08 17:58:17 +01:00
EvilOlaf
176f78fdc4 Let's do edge only for now 2026-01-08 15:38:23 +01:00
EvilOlaf
881e231ba5 rewrite all patches 2026-01-08 15:38:23 +01:00
EvilOlaf
ee06d8cdd7 fix borked tz data 2026-01-08 15:38:23 +01:00
EvilOlaf
40173173cf fix broken patch 2026-01-08 15:38:23 +01:00
EvilOlaf
ba7701a991 sunxi: bump edge to 6.18.4 current to 6.12.64 2026-01-08 15:38:23 +01:00
Igor Pecovnik
63cf880b6e Rockchip maint: drop upstreamed patch 2026-01-08 15:36:51 +01:00
Ricardo Pardini
063c641686 genio: bootscript: boot-genio: rework addr's so can boot large initrd's
- desktop images have half the world in their initrd (plymouth?)
- `bdinfo` shows reserved regions, which are hit depending on the size of initrd
- when reserved region is hit, u-boot says `** Reading file would overwrite reserved memory **`
- done by AI after looking at `bdinfo` reserved regions
- hard lesson: all `0x` hex have to be double quoted, otherwise `Wrong image format for "source" command`
- add note about Meco having conjured up `load_addr` (it's `loadaddr`); doesn't hurt
- while at it, remove copypasta/duplicate bootlogo/consoleargs stanza
2026-01-08 12:30:24 +01:00
Ricardo Pardini
230f937d4b extensions/mtkflash: Mediatek mtk-flash direct flashing after build
- similar to `rkdevflash`, but for Mediatek devices
- also simpler; lk.bin & fip.img are produced by image build and directly used
- requires Rust+Cargo, so add those to hostdeps
  - since this is a core extension, those will be included in all Docker images too
  - which was bound to happen anyway since Rust in Linux Kernel is no longer an experiment
- extensions/mtkflash: sha1-based bin path, use fork & add `--no-erase-boot1`
- example invocation:
  - `BOARD=radxa-nio-12l BRANCH=collabora RELEASE=trixie EXT=ufs,mtkflash MTKFLASH_TTYACM_DEVICE=1`
2026-01-08 12:30:24 +01:00
Ricardo Pardini
d3d5bd2134 radxa-nio-12l: u-boot: config: extra CMD options
- `CONFIG_CMD_ITEST`   # itest expects integers on both sides, whereas regular test assumes strings
- `CONFIG_CMD_BOOTZ`   # bootz allows booting zImages
- `CONFIG_CMD_MEMINFO` # meminfo shows memory info in u-boot
- `CONFIG_CMD_SETEXPR` # setexpr allows arithmetic expressions in setenv
2026-01-08 12:30:24 +01:00
Ricardo Pardini
04cb12bfe0 radxa-nio-12l: u-boot: fix u-boot env conflict; include userspace tooling
- u-boot stores env in UFS LUN 1
- use a 2mb offset (different from vendor/Collabora's) to avoid any env conflict
- point fw_printenv/setenv at it at the correct offset and size
2026-01-08 12:30:24 +01:00
Ricardo Pardini
150f2e28b2 radxa-nio-12l: include SRC_CMDLINE for extlinux booting; add explanations
- set SRC_CMDLINE, used in extlinux/EXT=u-boot-menu scenarios
- note about d4/d8/d16 irrelevance now as we have RAM autodetection
- note about where the blobs (libdram/libbase/lk.bin) live in GH: https://github.com/armbian/mtkbin
2026-01-08 12:30:24 +01:00
Ricardo Pardini
431f53df3e genio: u-boot: patch: fdt_addr_r/kernel_addr_r/ramdisk_addr_r for large kernels/initrds
- this patches u-boot default addresses with the same values used in the boot-genio bootscript
- this enables booting extlinux with large kernels and initrd (eg: `EXT=u-boot-menu`)
2026-01-08 12:30:24 +01:00
Ricardo Pardini
324d1ed403 genio: u-boot: patch: UFS 4k UMS fixes + BTRFS fixes/enablement
- backport fixes from upstream u-boot for
  - BTRFS (plus enable BTRFS and BZIP2 support for radxa-nio-12l)
    - tested with `CARD_DEVICE=/dev/mmcblk1 ROOTFS_TYPE=btrfs BTRFS_COMPRESSION=zstd` (no UFS!)
    - also with `EXT=ufs CARD_DEVICE=/dev/sdc ROOTFS_TYPE=btrfs BTRFS_COMPRESSION=zstd` (UFS!)
  - 4k block size UFS for UMS: fixes block size issue (USB issues unhandled)
- Enable "bind" command for the Mediatek-standard USB Gadget Ethernet
2026-01-08 12:30:24 +01:00
Ricardo Pardini
872863b95a genio: u-boot: patch: mt8195: boot order: SD -> UFS -> eMMC -> USB -> Network
- this way, one doesn't need to cripple UFS to be able to boot from SD
- USB didn't get the same treatment as it's slow and **not working**...
  - ...and beyond me to fix; both OTG and Host mode are funky in u-boot...
  - ...but seem to work fine in kernel
- IMPORTANT: keep in mind: "SDcard is NOT UFS (4k block)" and don't fall for traps!
- Network note:
    - `setenv ethaddr xx:xx:xx:xx:xx:xx` & `saveenv` & `reset`
    - required for network booting; mtk doesn't use random/cpu# MAC
    - required for stable MAC in kernel (keep IP from changing, etc)
2026-01-08 12:30:24 +01:00
Ricardo Pardini
a03b88841c genio: u-boot: patch: mt8195: adjust memory size at runtime and fixup fdt
- Use TFA + libdram to obtain and set the actual memory size.
- Overwrite the memory size in the devicetree that is passed to the kernel with the actual size detected.
- All credit to Bartosz Bilas' work for the mt8188/mt8370.
- This doesn't really "use" TF-A/libdram though, those call bl33 with magic arguments which we read here.
- That is implemented by a patch in TF-A for the mt8195 platform.
2026-01-08 12:30:24 +01:00
Ricardo Pardini
5911f02880 genio: mt8195: atf: patch: add TF-A RAM size autodetection pass to bl33
- With this, bl2 will pass down the DRAM size it gets from libdram
  down to bl33 (u-boot proper) via a magic location
- This is a rework of the implementation for another MTK plat (GRINN)
2026-01-08 12:30:24 +01:00
Ricardo Pardini
ca4fe3da9a radxa-nio-12l: enable build u-boot from sources
- using family code
2026-01-08 12:30:24 +01:00
Ricardo Pardini
91b2454496 genio: export (from the image) bins needed for flashing
- so regular armbian/build users can get them in `output/images`
2026-01-08 12:30:24 +01:00
Ricardo Pardini
8c727d0f3a genio: implement complete OPTEE/u-boot/TF-A (x2)/FIP build
- genio: implemented complete bootloader build according to Collabora's scripts
  - main difference from other similar stack is that TF-A builds final FIP, not u-boot
  - thus I first disable ATF build initially, then build it in hook
  - alternatively: we could build our own FIP, but that would diverge too much
  - declare functions inside hook so hashing does all the versioning automatically
- write_uboot_platform() is a no-op; don't write bootloader to image
- ensure bootloader _builds_ across bookworm/trixie/jammy/noble/resolute
  - keep in mind original code is for bookworm (tested to build and work on trixie)
  - need to juggle the `-Wl,` prefix on LDFLAGS
    - this is not mainline ATF and it does "stupid with flags"
- genio: u-boot: always clean optee & first atf build before building
  - so one can switch build host with `DOCKER_ARMBIAN_BASE_IMAGE` (UFS...)
- genio: u-boot: using `armbian/mtkbin` repo
  - outputs fip.img & lk.bin directly to output(/images)
  - disk images do _not_ contain any bootloader
2026-01-08 12:30:24 +01:00
Ricardo Pardini
48237dda3f genio: u-boot: patches: rewrite Collabora patches 2026-01-08 12:30:24 +01:00
Ricardo Pardini
d6b1aedb52 genio: u-boot: patches: cosmetic formatting fixes on top of Collabora
- small hack to get around stupid "From xx" parsing in Armbian patcher
- also: fix attribution in `0023-watchdog-mtk_wdt-Correct-maximum-timeout-from-15-to`
2026-01-08 12:30:24 +01:00
Ricardo Pardini
8794a26af3 genio: u-boot: patches: ATF patches from Collabora (pristine)
- From https://gitlab.collabora.com/mediatek/aiot/boot/-/tree/main/patches/trusted-firmware-a at bc779c20dd5ea72a9f3edd248eb08460e3c837b6
2026-01-08 12:30:24 +01:00
Ricardo Pardini
121c89763a genio: u-boot: patches: vendor u-boot patches from Collabora (pristine)
- from https://gitlab.collabora.com/mediatek/aiot/boot/-/tree/main/patches/u-boot at 2db9a7b3f8c9c2141af6a01dd9372dbba809cf95
- I can see atleast one is a bit malformed so commit separately
2026-01-08 12:30:24 +01:00
Igor Velkov
94dd1fef1f fix for uninitialized variable 2026-01-08 12:29:01 +01:00
Igor Velkov
c580068245 enable btrfs support in uBoot 2026-01-08 12:29:01 +01:00
Igor Velkov
6bc25ea2c2 feeding rabbit 2026-01-08 12:29:01 +01:00
Igor Velkov
c60f78e0ec Helios64: update uBoot to v2026-01-rc5
- Switched to the binman-atf-mainline scenario with the same rkbin DDR blob
    rk3399_ddr_933MHz_v1.25.bin (TPL blob, as in the old working loader). DRAM init is correct, full
    4 GB visible, Linux boots.
  - U-Boot and DTS updated to v2026.01-rc5. Added MDIO/PHY node and phy-handle in rk3399-kobol-
    helios64.dts, fixing “mdio node is missing”. Disabled i2s2 in the U-Boot DT to avoid rockchip-
    i2s ... Could not register PCM.
  - boot_targets in U-Boot config shortened (mmc1, scsi0, usb0, pxe, dhcp) to avoid env_buf ... too
    small; however, the last built binary still shows the warning (needs rebuild with the shortened
    list or enlarging the buffer).
  - Boot flow: bootstd scans SD (mmc0) and eMMC (mmc1); SD boot works even without mmc0 in
    boot_targets.
  - Other changes: defconfig has CONFIG_ROCKCHIP_EXTERNAL_TPL=y to use the external DDR blob.

Boots.
2026-01-08 12:29:01 +01:00
Werner
660c52bc53
rock-3a: unset BOOTFS_TYPE for non-vendor builds (#9068)
* rock-3a: unset `BOOTFS_TYPE` for non-vendor builds

* unset BOOTFS_TYPE at all

following recommendations from Jianfeng and Ricardo
2026-01-08 12:25:00 +01:00
Igor Velkov
9922402de8 !fixup cleanup 2026-01-08 12:24:18 +01:00
Igor Velkov
e92c53a03f Include DEST_LANG in rootfs cache hash calculation
The `DEST_LANG` variable affects rootfs cache content (locale is generated via
`locale-gen "${DEST_LANG}"` before cache is packaged), but it was not included in the
cache hash calculation.

This meant that changing `DEST_LANG` would not invalidate the existing cache,
potentially resulting in images with incorrect locale.

Include `DEST_LANG` in the `hash_hooks` calculation in `calculate_rootfs_cache_id()`.

Changes
- `lib/functions/rootfs/create-cache.sh`: Add `LANG=${DEST_LANG}` to the hash input

Result
Changing `DEST_LANG` now properly invalidates rootfs cache, ensuring the correct locale
is generated.
2026-01-08 12:24:18 +01:00
Igor Velkov
3e71438048 Fix locale warnings during chroot operations
Build process generated numerous locale warnings like:
bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
perl: warning: Setting locale failed

This happened because the Docker container and host environment were
configured to use `en_US.UTF-8`, but the rootfs cache may not contain
this locale (only `C.utf8` and whatever `DEST_LANG` specifies,
e.g. `en_GB.utf8`).

When `chroot_sdcard` runs commands inside the rootfs, environment variables
are inherited from the host/Docker, causing locale lookup failures.

Then use `C.UTF-8` locale for the build environment instead of `en_US.UTF-8`.
This locale is always available in rootfs immediately after mmdebstrap,
requiring no generation.

Changes
`lib/functions/host/docker.sh`: Remove `en_US.UTF-8` locale generation,
set `LANG=C.UTF-8` in container environment
`lib/functions/host/prepare-host.sh`: Change locale exports
from `en_US.UTF-8` to `C.UTF-8`
2026-01-08 12:24:18 +01:00
Igor
43c7710bfd
tools/repository/extract-repo.sh: simplify extraction by copying directly from pool (#9174)
* tools/repository/extract-repo.sh: simplify extraction by copying directly from pool

Remove dependency on Packages index files. Instead of parsing package metadata
to find file locations, directly scan the pool/ directory structure and copy all
.deb files found in each component subdirectory.

This simplifies the code and makes it more robust since it doesn't rely on
index files being present or correctly formatted.

Signed-off-by: Igor Pecovnik <igor@armbian.com>

* Add helper script: recursively clean Armbian Debian package artifacts

* Update tools/repository/cleanup-debs.sh

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Signed-off-by: Igor Pecovnik <igor@armbian.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2026-01-08 12:23:40 +01:00
Ricardo Pardini
0562e3a79f atf: once again no-warn-rwx-segment woes
- turns out everybody was wrong, including me
- some (older?) ATF sources won't work, ever; thus
  - introduce ATF_SKIP_LDFLAGS=yes to skip it completely
  - introduce ATF_SKIP_LDFLAGS_WL=yes to only skip the `-Wl,` prefix
    - this is for ATF's that pass flag directly to linker, not gcc
- artifact-uboot: hash atf-building code into artifact version
2026-01-08 12:20:14 +01:00
Ricardo Pardini
f60c1dcf12 genio: collabora: bump to Collabora's 6.19-rc4 2026-01-08 12:09:02 +01:00
Ricardo Pardini
6cf92aa21c linux-genio-collabora: enable USB Gadget stuff
- Genio has an actual USB3 UDC, so it makes sense to enable USB Gadget
  options so one can try those out at (hopefully) 5Gbit/s
2026-01-08 12:09:02 +01:00
Ricardo Pardini
40a2619e19 linux-genio-collabora: disable all platforms except CONFIG_ARCH_MEDIATEK
- this is very obviously a single family kernel, no use having dtb's for
  every other board here
- should make it a bit lighter to build too
2026-01-08 12:09:02 +01:00
Ricardo Pardini
1ba21aefe8 linux-genio-collabora: update defconfig, no changes (6.18 -> 6.19-rc1 bump) 2026-01-08 12:09:02 +01:00