Commit Graph

98 Commits

Author SHA1 Message Date
Ricardo Pardini
90e0fe0ba2
extensions framework + UEFI aarch64/x86 + rpi4b + core changes/fixes (#3300)
* extensions framework (née "fragments")

- this should actually change nothing at this point, just add capabilities
- the framework is implemented in lib/extensions.sh
- the "if function x exists then call x" replaced with call_extension_method()
  - +inline documentation
  - +compatibility names

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>

* extensions framework; meta-extensions: auto-docs and sample extension gen

- 2 extensions dealing with extensibility itself
  - detect-unused-extensions: shows which extensions are enabled, but never called.
  - gen-sample-extension-docs: generates a sample empty extension & Markdown documentation for extensions

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>

* new extension methods and features via config variables in core Armbian

- `SKIP_EXTERNAL_TOOLCHAINS=yes` - does not download or use any linaro toolchains, only build host-installed ones
- `SKIP_BOOTSPLASH=yes` - does not patch kernel for splash file
- `EXTRA_BSP_NAME=xyz` - allows for BSP variants, useful for when extensions modify the BSP
- `EXTRA_ROOTFS_MIB_SIZE=x` - add x mib's to rootfs size, for use with very small images
- `KERNEL_EXTRA_TARGETS` - what extra targets to make kernel for, default to "modules dtbs"
- `BOOTCONFIG=none` - does not build nor install u-boot; also doesn't handle bootscripts et al
- `unset KERNELSOURCE` - does not build nor install kernel, nor build initrd, nor build nor install firmware
- `ARMHF_ARCH=skip` - does not add armhf to apt/dpkg, thus pure arm64
- `SKIP_ARMBIAN_REPO=yes` - results in armbian.list.disabled in the final image
- define `APT_EXTRA_DIST_PARAMS` with apt-cacher-ng options and use it for `PACKAGE_LIST_INSTALL/REMOVE` et al
- initial support for targeting x86/amd64 UEFI and BIOS
    - some do's/don'ts for x86/amd64, like a different `UBUNTU_MIRROR` default
    - GPT/EFI(ESP) partitions (fat, `UEFISIZE=256` to enable, mount `UEFI_MOUNT_POINT=/boot/efi`, first on disk but ends
      up at `$uefipart`=15)
    - GPT/BIOS partitions (fat, `BIOSSIZE=1` to enable, second on disk but ends up at partition 14)
    - `UEFI_FS_LABEL="armbiefi"` - to set the FAT label for the EFI partition, visible in Win/Mac
    - hard-requires gdisk package host-side
- add add_host_dependencies() extension method; fill `EXTRA_BUILD_DEPS="pkg pkg2"` to install to host before toolchains
  download
- add pre_prepare_partitions() extension method, for custom partition size calculations
- add create_partition_table() extension method, used to do full-custom partitioning if `USE_HOOK_FOR_PARTITION=yes`
- add post_create_partitions() extension method, mostly for easy debugging
- add post_write_sdcard() extension method, where you can also set `SKIP_VERIFY=yes` to skip sdcard verification
- add post_install_kernel_debs() extension method.
- multiple fixes to bsp to avoid spurious errors when files are not where it expects
- v4: detect `update-initramfs` failure and abort build with useful message if it does
- v4: show useful stacktrace in `exit_with_error`
  - if `ERROR_DEBUG_SHELL=yes`, drop into a shell before unmounting/deleting everything, so we can inspect what went wrong
- v4: display a message before `apt-get remove PACKAGE_LIST_BOARD_REMOVE` packages, so any errors while removing are easy to understand
- v4: preserve kernel .config's dates when copying

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>

* extensions framework; refactor tool fetching/building into extensions

- a few examples of core refactoring using extensions
- sunxi-tools extension, enabled by 2 different sunxi family includes ("reuse" example)
- marvel-tools extension, enabled by 2 different mvebu family includes
- rkbin-tools extension, enabled by rockship64_common family include
- amlogic-fip/c2-blobs stuff refactored directly into meson64_common.inc ("single-use" example)
- removed the 'testings' fetch_from_repo completely since not used anywhere.

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>

* .wip's for UEFI arm64 and UEFI/BIOS x86 via new GRUB extension

- v3: added `growroot`-awareness to `armbian-resize-filesystem`
    - the partition-growing part of `armbian-resize-filesystem` does not deal correctly with the UEFI layout
    - `growroot` is installed on UEFI images by default, that handles growing partition during initramfs
    - now `armbian-resize-filesystem` handles `resize2fs` only, and works.
- v4: reworked UEFI board/family/include structure:
    - use Distro's `linux-generic` kernel only for `current`
    - `edge` now builds it's own pure-mainline `5.15.y` kernel, for both x86 and arm64
        - `.config` taken from Ubuntu, probably needs tuning for EXTRAWIFI=yes et al
- v4: introduce `SKIP_KERNEL_SYMLINK=yes`, tested in `builddeb`
    - to avoid symlinking kernel; u-boot likes it, but grub and flash-kernel hates it
- v5: many fixes
- v7: more small fixes.

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>

* .wip for the RaspberryPi 4B via new flash-kernel extension

- this does not build it's own kernel "yet", but uses default linux-raspi kernel from Ubuntu
- flash-kernel is not really a bootloader
    - it just prepares kernel et al a FAT partition for booting by the RPi4b bootloader
    - flash-kernel is standard Debian package, but has only been tested on Ubuntu releases
- it is really only known-working since Hirsute release.
  - Debian's rpi kernel is armhf only, so out of scope here, at least until we add source-built kernels.
- v3: fixed focal rootfs build. untested.
- v3: better variable names, preparing for source-built kernel.
- v5: new edge build with pure mainline kernel.
- v6: many fixes and some hacks for packaging and layout, also firmware (using Ubuntu's)

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>

* Added first patch to edge x86 related to wifi drivers

* extensions: leave hostapd alone; remove hackish ext; block reentrancy

- package-list-utils does not belong in this PR
- grub or bcm2711 is not the place to remove hostapd
- block recursive enable_extension() calls, for now.

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>

* gen-sample-extension-docs: fix: avoid counter in generated sample

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>

* extensions: dependencies: enable_extension() in extensions with a stack

- and better stacktraces, I hope

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>

* Remove code from package list since we don't have it in repository
Adjust kernel config to disable driver that needs further polishing.

* Allow amd64 to build the same desktops as aarch64. We only have this limit for armhf, where some desktops don't work

* amd64: allow building amd64 on aarch64 with system toolchain

- conditionally add gcc-x86-64-linux-gnu to hostdeps

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>

* add libelf-dev directly to hostdeps (and Dockerfile), remove extension

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>

* packaging: remove SKIP_KERNEL_SYMLINK hack, fix the root cause

- which was the missing $image_name for non-arm64 & non-arm, so: x86 for example

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>

* grub: really obliterate u-boot stuff from BSP

- for now. soon we'll refactor u-boot so not have to do this

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>

* flash-kernel: really obliterate u-boot stuff from BSP

- for now. soon we'll refactor u-boot so not have to do this

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>

* extensions: add host_dependencies_ready() hook

- this passes FINAL_HOST_DEPS containing all hostdeps for the run after they're installed

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>

* Add verification functions for correct selection.

* If UEFI Skip symlink creation

* Do not create dtb package for amd64

* Skip scripts folder cleaning if build process native.

Skip creating  postinst prerm scripts  for headers.

* Skip applying headers-debian-byteshift.patch if build native

* Fix architecture syntax as x86_64

* Revert "amd64: allow building amd64 on aarch64 with system toolchain"

This reverts commit 0c5ee20bb1.

* Compare architectures before starting compilation.



Signed-off-by: The-going <48602507+The-going@users.noreply.github.com>

* extensions: cleanups after fixes by the-Going

- packaging:
  - there is _no need_ anymore for the symlink hack, CONFIG_EFI or no. But check is great, see below
  - it's not `amd64` that has no DTB's, it's all UEFI, thus: `is_enabled CONFIG_EFI`, thanks!
- Explicitly disallow "reverse cross compile" in amd64.conf.
- whitespace-only-deletions: revert. we shall shellfmt the whole thing one day, but not today.
- fix a few syntax warnings in newly introduced code (floating `$ARCH` vs `"${ARCH}`) - blame shellcheck

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>

* packaging: fix: turns out a lot of boards have CONFIG_EFI=y, can't use that for dtb/no-dtb decision.

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>

* grub: remove debug

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>

* firmware: allow installing `armbian-firmware-full`; make it really full

- can now use `BOARD_FIRMWARE_INSTALL="-full"` to install full firmware for the board. enable for UEFI.
- don't rely on KERNELSOURCE for firmware-related decisions. introduce `INSTALL_ARMBIAN_FIRMWARE` which defaults to `yes`
- rpi4b/flash-kernel: disable Armbian firmware; we need linux-firmware-raspi2, which conflicts.

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>

* extensions: log to /${LOG_SUBPATH}/ instead of fixed /debug/

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>

* extensions: introduce cleanup_extension_manager() called by build-all-ng's unset_all()

- to reset/unset everything done by the the initializer, so build can run again

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>

* extensions: remove 'global' logging, for use with build_all_ng

- enable_extensions() will have to live on without logging to file. it's just too early.
- now init EXTENSION_MANAGER_TMP_DIR in initialize_extension_manager()
- now init EXTENSION_MANAGER_LOG_FILE in initialize_extension_manager()

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>

* extensions: build-all-ng.sh bugfix due to extension's debug to stdout

- extensions (among other things) can produce output to stdout when activated
- fix: check_hash() produced "idential" (sic, now changed to IDENTICAL) to stdout as a trigger
- debugging output got mixed with "idential", rendering hash cache void for families that used extensions
  - eg: sunxi, others
- fix is to send stdout to the bitbucket when sourcing the board & arch config files
- proper fix would be stop using stdout in this case and use return code for check_hash()
  - one day soon

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>

* Add CI build targets

Co-authored-by: Igor Pecovnik <igor.pecovnik@gmail.com>
Co-authored-by: The-going <48602507+The-going@users.noreply.github.com>
2021-12-06 09:49:49 +01:00
Igor Pecovnik
2eae831889
Calculate patches changes only on first level since this fails when including subfolder. Bug in sort. Needs to be reworked once
Also cleanup few patches we don't need.
2021-12-05 16:53:08 +01:00
Igor Pecovnik
9daf120b21
Bugfix - build all - add another kernel build exception 2021-12-05 12:44:05 +01:00
Igor Pecovnik
0e86dc162e
Bugfix on hash making
- include subfolders
- compare .patch files only
2021-12-05 09:01:34 +01:00
Igor Pečovnik
3bf7fc9669
Bugfix - hash calculation depends on locale settings (#3312) 2021-12-04 12:11:07 +01:00
Igor Pecovnik
f0541c3b4b
Add internal switch which allows to skip building certain kernel families even conditions are met.
This helps when we have no time to work on certain branch patches right now, while all others builds without a problem.

We create a file this way:
c0c6fd3a02
2021-11-25 14:39:15 +01:00
Igor Pecovnik
38455f7f12
After changing sunxi to the mainline sources we manage to produce a bug
We need to handle an exception
https://github.com/armbian/build/pull/3272
2021-11-24 19:25:24 +01:00
Igor Pečovnik
a1d7dec2db
Possible fix for Opiz2 upgrade breaking
https://forum.armbian.com/topic/19101-orangepi-zero-2-supported-bullseye-cant-update/?do=findComment&comment=130987
2021-11-16 05:53:35 +01:00
Igor Pečovnik
f0ebf400b1
Change hardcoded with dynamic values (#3258) 2021-11-15 18:27:27 +01:00
Igor Pečovnik
315d99896b
Store changelog for upstream changes in the cache/hash/ (#3131)
* Store changelog for upstream changes in the cache/hash/

* Cleanup

* Calculate urls

* Use URL

Don't merge since it doesn't work properly yet

* Check if OLDHASHTARGET commit exists otherwise use oldest

* Fix log updating

* Improve log format, add better support for sunxi
2021-10-28 18:16:43 +02:00
Ricardo Pardini
be5f2b8c75
introduce DEB_COMPRESS for dpkg-deb+kernel's KDEB_COMPRESS (#3222)
* introduce DEB_COMPRESS for dpkg-deb+kernel's KDEB_COMPRESS

- Avoids zstd which is now default in Ubuntu Impish, but can't be read by Debian dpkg
- Allows for xz, gzip, or none; defaults to xz; use gzip for faster, and none for much faster.

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>

* use KDEB_COMPRESS in packages/armbian/builddep for 5.12+ kernels too

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
2021-10-27 18:55:12 +02:00
Piotr Szczepanik
86abac1fd4
Cleanup u-boot configurations for rockchip64 derivatives (#3150)
* Cleanup u-boot configurations for rockchip64 derivatives

* Bring separate BOOT_USE_* variables into BOOT_SCENARIO

* Revert BOOTDIR change in rockchip64

* Bump RK3568 BL31 to v1.35
2021-10-26 22:14:41 +02:00
Igor Pečovnik
cac33b070e
Unset variable so it doesn't get extended (#3212)
That lead to glued packagelist when build images in a row.

[ o.k. ] Installing the desktop packages for [ Armbian ]
Reading package lists...
Building dependency tree...
Reading state information...
E: Unable to locate package remminaanacron
2021-10-20 19:01:34 +02:00
Piotr Szczepanik
0069ad60a6
Preliminary support for rockchip rk35xx boards (#3111) 2021-09-15 22:08:39 +02:00
lanefu
9beffe4b86
set log subpath in build-all (#3067)
* set log subpath in buld-all

* build all log pathing

* Update build-all-ng.sh
2021-07-27 20:03:31 -04:00
lanefu
b1d82308db
RC upload flag (#3027)
* RC upload flag

* Update build-all-ng.sh

* Try RC Images

Co-authored-by: Igor Pečovnik <igorpecovnik@users.noreply.github.com>
2021-07-19 20:36:46 -04:00
Igor Pečovnik
fcb8b6f195
Code cleaning attempts (#2925)
* Move function run_on_sdcard to more appropriate location

* Focus on bash headers, unify, adjust (c)

* Adjust (c) to range

* Cleanup compile.sh

* Cleaning main

* Build all, main configs

* fine tunning

* Improve readme
2021-06-26 23:36:47 +02:00
Igor Pecovnik
d4deca4de3 Bugfix for actions 2021-06-12 19:19:15 +02:00
Igor Pecovnik
b012a8a754 Another method for signing images 2021-06-12 16:20:46 +02:00
Igor Pečovnik
a9b81a98ec
Use sudo when signing images 2021-06-12 14:34:18 +02:00
Aristo Chen
78894792a5
Update URLs (#2870)
* Update URLs

* Update URLs

* Update URLs
2021-06-10 11:27:51 +02:00
Igor Pečovnik
83f4f85d9d
Bugfix - extrawifi is not adding in build-all scenario (#2878) 2021-06-06 14:56:06 +02:00
Igor Pecovnik
f9fef1ac85 Another small bugfix for backend 2021-06-05 09:07:47 +02:00
Igor Pečovnik
b087cfb6b3
Enable virtual ARM64 nightly builds for qemu (#2875)
* Enable Virtual qemu build targets
* Bugfix - saving build number is being overwritten before saved
* Remove stable builds, not needed
* Update kernel config, enable current instead of edge
2021-06-05 08:49:25 +02:00
Igor Pečovnik
bc32f1913d
Small bugfixes to buildall, remove patch that is not needed (#2869) 2021-06-02 10:55:17 +02:00
Igor Pečovnik
5909abd076
Hardening patch hashing method (#2868)
* Improve patch hashing method

When running script inside Github runner, hashing is different due to slightly different sort ...

* Also change method for creating hashes and supress error

* Sort is locale dependent ... of course ;)

* Cleanup
2021-06-01 19:47:45 +02:00
Przemysław Sztoch
486a821a55
VENDOR, rock-pi-n10, RM_LIST for armbian-config/zsh, Static MAC for networkd (#2789)
* VENDOR, rock-pi-n10, RM_LIST for armbian-config/zsh

VENDOR parameter in configuration
zsh is the best of course...
Static MAC for networkd

ROCK Pi N10 (Radxa) - Initial support, knwon bugs:
- Problem with poweroff (kernel panic).
- DeviceTree is not fully verified, I suspect missing and unnecessary
entries.
- No support for NPU
- u-boot without NVME support
- I have doubts if I chose the right preboot loader for RK3399Pro, NPU
  and installed DDR memory.

* New RK3399Pro boot preloaders.

* rootfs checksum, DEBOOTSTRAP_LIST fix, output.log fix

Repaired checksum for rootfs
Added use PACKAGE_LIST_RM to purge DEBOOTSTRAP_LIST
Better logging to output.log
Fix for new host distribution detection (ie Debian Bullseye).
ubootdebs as new cleaning option
2021-05-11 21:50:14 +02:00
Igor Pečovnik
76ef27621f
Backend improvements (#2812)
* Backend improvements

When making images, show with green color if image already exists.

* Few fixes
2021-05-09 17:00:31 +02:00
Igor Pecovnik
4a684bfb84 backend tweaks: we don't need to cycle all distributions when making u-boot package 2021-04-14 20:04:57 +02:00
Piotr Szczepanik
7504be2e3d
Unset SRC_EXTLINUX and SRC_CMDLINE in build-all-ng.sh (#2772)
* Unset SRC_EXTLINUX in build-all-ng.sh

* Unset SRC_CMDLINE in build-all-ng.sh
2021-04-13 23:57:00 +02:00
Igor Pecovnik
42b4396545 Bugfix: when we build BSP packages, we don't need to build all (non defined) desktop packages. 2021-04-04 16:22:58 +02:00
Igor Pecovnik
4d30ba5545 Bugfix for determining changes in patches
Related to https://github.com/armbian/build/pull/2704
2021-03-28 12:19:36 +02:00
Igor Pečovnik
0cdffb29b0
Renaming DEV branch to EDGE (#2704)
* Change DEV to EDGE
* Renaming patches dev folder to edge
* Move patches into subdir where they will be archived.
* Relink patch directories properly
2021-03-24 19:01:53 +01:00
Igor Pecovnik
cc19adfebd Build all optimisations 2021-03-15 01:58:33 +01:00
Igor Pecovnik
e16b48ac18 Remove Ubuntu Groovy from package making 2021-03-06 22:04:15 +01:00
Igor Pečovnik
3a74abe43d
Merge desktop branch (#2662)
Co-authored-by: Miouyouyou (Myy) <myy@miouyouyou.fr>
Co-authored-by: Igor Pečovnik <igorpecovnik@users.noreply.github.com>
Co-authored-by: Richard Neese <r.neese@gmail.com>
Co-authored-by: iav <iav@iav.lv>
Co-authored-by: lanefu <lanefu@users.noreply.github.com>
Co-authored-by: Werner <EvilOlaf@users.noreply.github.com>
Co-authored-by: Oleg <balbes-150@yandex.ru>
Co-authored-by: Lane Jennison <lane@lane-fu.com>
Co-authored-by: JMCC <jmcc1@gmx.com>
2021-02-24 18:19:09 +01:00
Igor Pečovnik
bf544c21f8
Display additional info to build log 2021-01-29 21:41:35 +01:00
Igor Pecovnik
4a986a8787 Backend - move version upgrade to separate functionality 2021-01-29 21:04:46 +01:00
Igor Pecovnik
b10b0454a5 Set image compression levels to maximum
This feature is used mainly by us or other distributors. An internal function. Compression time and CPU usage for this process is significantly increased but the size of the daily batch was decreased from 80Gb -> 50Gb. Mitigate upload speed bottleneck.
2020-12-22 12:54:04 +01:00
Igor Pecovnik
666ac0bc5e Buildall - tiny fix 2020-11-22 12:04:13 +01:00
Igor Pečovnik
3ddd91de71
Add several small improvements for building all images (#2365)
* Add several improvements for build all images / kernels
* More small fixes
* Adjust version
2020-11-22 08:54:41 +01:00
Igor Pečovnik
a78eaa5aaf
Improve creating images from repository (#2340)
* Few cosmetic changes and updated configs
* Improve repository install
* Update configs
* Adjust configs
2020-11-14 19:29:39 +01:00
Igor Pecovnik
37b50f154a Bugfix related to firmware creation 2020-11-12 19:46:47 +01:00
Igor Pečovnik
694b2313dd
Cosmetical: exchange mv with rsync (#2329)
* Cosmetical: exchange mv with rsync

Also make build script output less chatty to console. Show SD and mount size % only.

* Leave output here
2020-11-11 19:25:51 +01:00
Piotr Szczepanik
c43c4e9cbd Add SPI flash boot support to rockchip64/rk3399 2020-10-17 23:38:05 +02:00
Igor Pečovnik
1275f118e2
Change desktop cache name, add support for automated cached creation / switching (#2257) 2020-10-16 15:25:15 +02:00
Igor Pečovnik
448484f6d8
Change Ubuntu Eoan to Ubuntu Groovy and enable it as CSC (#2254)
* Change Ubuntu Eoan to Ubuntu Groovy and enable it as CSC

Tested CLI and desktop image, but needs cache creation and repository before it will be possible to build without error.

* Update Groovy compiler for chroot

* Adjust pkg dependencies for groovy

Sadly htop doesn't build
2020-10-14 22:50:11 +02:00
Igor Pecovnik
43896d5891 Bugfix for backend operations 2020-10-14 14:53:35 +02:00
Igor Pečovnik
e8f961c9c7
Mitigate git server failures by retrying git commands several times. (#2251)
* Mitigate git server failures by retrying git commands several times.
* Bugfix - commit type was not working at all. Now it works
2020-10-14 08:36:21 +02:00
Igor Pecovnik
668e764357 Backend - split upstream changes to beta and stable 2020-10-04 16:55:11 +02:00