CONFIG_DEBUG_INFO_BTF relies on libelf-dev and pahole (provided by dwarves
package).
This commit add dwarves package both as hostdeps and to Dockerfile.
* 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>
* Make builder dockerfile to be x64 and aarch64 compatible
and building speed optimization
* remove hardcoded amd64
currently docker from edge not work, stable works, then stable instead edge
* libc6-dev-armhf-cross need to build rockchip uboot for helios64 under arm64
* need to add architecture to avoid blame for no docker for i386 arch
* hirsute uses same names for qemu-user-static
* let's only x64 use aptly from dev
* lsb-release package is getting deprecated
It is not present on Hirsute anymore so we better remove its dependency
* - remove lsb-release dependency from docker
- exit if Docker version is too low (check works only on Ubuntu builds, else doesn't do anything)
Reference: https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/1916485
* Cleanup
* Remove quotes for proper pkg install
* Automatically upgrade Docker engine
* Missing python dependencies
* Bugfix - debian name is not just one word
* Put this back
* provoke error
* Revert
* Adjust Github runner to make bionic and focal and compile u-boot for test
* Adjust cron
* Remove Bionic, cron back to 14 days
* Change to ubuntu-latest
* Dockerfile update
Add package to fill-in missing ssh-keygen dependency
(required by lib/distributions.sh when CRYPTROOT_ENABLE is true)
* lib/chroot-buildpackages.sh: Fix mistakes with shellcheck linting
This breaks the apt command line, resulting in the following error:
> E: Invalid operation
* lib/configuration.sh: cryptroot >= 2.1 uses memory intensive key derivation
fix that by reverting to the < 2.1 default algorithm (pbkdf2)
* replace apt with apt-get
APT is not meant to be used in scripts: https://manpages.debian.org/stretch/apt/apt.8.en.html#SCRIPT_USAGE_AND_DIFFERENCES_FROM_OTHER_APT_TOOLS
* use ARG for DEBIAN_FRONTEND=noninteractive
and get rid of the other instances. Since it's an ARG, it will only be valid during the container build process
* better line breaks for easy of maintanace
* alphabetical order of packages
* reduce image size by cleaning APT cache
* Initial commit for kernel boot splash
* Add startup files to disable bootlog when system is up / down
* Update logo, remove deprecated one
* Introduce new u-boot variable bootlogo
* Adjust kernel config
* Make logo possible on Odroid XU4
- add legacy and current upstream patches
- delete xu4 environment since its not used
* Cleanup C2,C4, both tested, logo works on mainline,
- adding legacy upstream patches for c4
* Enable bootlogo by default on Odroid N2
* Enable logo on RK3399 desktop images
* Cleanup the rest of the environment files
* Add initrd hook that copy splash file to initrd.
* Missing logo bits for one boot scripts
* Enable boot logo on Pinebook A64
* Enable bootlogo on Teres
* Update config
* Rework packages install that they can be installed from repository instead of local compile. Handy for making releases.
* Don't build ATF if you don't build u-boot
* Port ANX78xx Pinebook / Teres LCD panel driver from 5.6-rc1
* Move Teres U-boot to 2020.01 ... it boots with enabled screen now.
* U-boot 2020 needs some extra Pyton utils when packing sunxi bootloader. Adding to native and Docker build dependencies.
* Add Pinebook lid wakeup
* python3-dev is also needed dependency
This allows to enter the docker container in a shell by:
./compile.sh docker-shell
BOARD=firefly-rk3399 BRANCH=dev RELEASE=bionic BUILD_DESKTOP=no
Then you can build the whole thing in the docker shell with:
./compile.sh
Once you need to build the U-Boot only for development purpose, you can run:
# Optional: prepare the environment first if you had not run `./compile.sh`
./compile.sh 'prepare_host && compile_sunxi_tools && install_rkbin_tools'
# build the U-Boot only
./compile.sh compile_uboot
If you prefer to use profile, for example, `userpatches/config-my.conf`, try:
./compile.sh my 'prepare_host && compile_sunxi_tools && install_rkbin_tools'
./compile.sh my compile_uboot
This commit also fixes#1638.
* Updated rockchip64-dev to u-boot v2019.10 and BL31 v1.30 (rk3399 boards)
* Updated rk3399 to u-boot v2019.10 and BL31 v1.30
* Revert changes to renegade u-boot patches
* Moved renegade u-boot patches into board dir
* Added debug info for RockPro64 and switched sdmmc to fifo-mode
* Disabled regulators in SPL for RockPro64
* Re-enabled sd vcc regulator in SPL for RockPro64
* Some device tree and config changes for OrangePi RK3399
* Fixed Rock Pi 4A's $BOOTCONFIG
* Let some boards use mainline atf instead of the one in rkbin
For example, roc-rk3399-pc can just boot the kernel using the
mainline atf.
* Add roc-rk3399-pc
* Fixed reset in mainline ATF
* Attached ATF version to v2.2 tag
* WIP: sdmmc fifo-mode in SPL only
* Renamed source config files
* Reverted changes to rockchip64 sources config
* Reverted patch moves
* Add missing trust.ini patch to rk3399 u-boot
* Reinstated tpl/spl patches in rk3399 family
* Added $RKBIN_DIR prefix in rk3399 sources
* Add demonstration of boards bootloader assignment in rk3399
AR-1 - Adding support category for distributions
AR-4 - Remove Allwinner legacy
AR-5 - Drop Udoo family and move Udoo board into newly created imx6 family
AR-9 - Rename sunxi-next to sunxi-legacy
AR-10 - Rename sunxi-dev to sunxi-current
AR-11 - Adding Radxa Rockpi S support
AR-13 - Rename rockchip64-default to rockchip64-legacy
AR-14 - Add rockchip64-current as mainline source
AR-15 - Drop Rockchip 4.19.y NEXT, current become 5.3.y
AR-16 - Rename RK3399 default to legacy
AR-17 - Rename Odroid XU4 next and default to legacy 4.14.y, add DEV 5.4.y
AR-18 - Add Odroid N2 current mainline
AR-19 - Move Odroid C1 to meson family
AR-20 - Rename mvebu64-default to mvebu64-legacy
AR-21 - Rename mvebu-default to mvebu-legacy
AR-22 - Rename mvebu-next to mvebu-current
AR-23 - Drop meson64 default and next, current becomes former DEV 5.3.y
AR-24 - Drop cubox family and move Cubox/Hummingboard boards under imx6
AR-26 - Adjust motd
AR-27 - Enabling distribution release status
AR-28 - Added new GCC compilers
AR-29 - Implementing Ubuntu Eoan
AR-30 - Add desktop packages per board or family
AR-31 - Remove (Ubuntu/Debian) distribution name from image filename
AR-32 - Move arch configs from configuration.sh to separate arm64 and armhf config files
AR-33 - Revision numbers for beta builds changed to day_in_the_year
AR-34 - Patches support linked patches
AR-35 - Break meson64 family into gxbb and gxl
AR-36 - Add Nanopineo2 Black
AR-38 - Upgrade option from old branches to new one via armbian-config
AR-41 - Show full timezone info
AR-43 - Merge Odroid N2 to meson64
AR-44 - Enable FORCE_BOOTSCRIPT_UPDATE for all builds
* Config files moved to userpatches.
* Automatic move config-default.conf to userpatches folder
* Move Dockerfile to config/templates which is then copied to userpatches.
* Enable torrent dl by default
* Install docker if we want to build under Docker but its not installed
* Adjust Vagrant settings
Signed-off-by: Tian Yuanhao <tianyuanhao@aliyun.com>
* Introducing build-all-ng
* Implementing REBUILD_IMAGES='board1,board2,...' for rebuilding certain images only
* Add optimisations when building kernels - only cycle trough needed targets. Adding variable for defining whether an image is build, otherwise only BSP is made.
* repository manipulating RFC
* Add bianco deb file that is added by default if repository is clean
* Switch to gpg2 signing method, small bugfix
* Create subdir for debs and debs-beta
* Synaptic bugfix: installing indexing tools https://forum.armbian.com/topic/8021-orange-pi-one-synaptic-package-manager-search-very-slow/?do=findComment&comment=74918
* add all modules by default to Odroid N2, but leave them commented
* Bugfix: not making any builds when selecting kernel_only
* Remove EXTERNAL=yes ... move armbian-config and armbian-firmware into main compilation area, drop others since they are deprecated anyway. This will also enable multi threaded images making
* Move armbian.list to create_sources_list function. Replace NTP by Chrony. Remove armbian-firmware from PACKAGE_LIST and RockPi 4A (#1528)
* Replace NTP by chrony. Remove installion of outdated armbian-firmware from reposity.
* added RockPi 4A
* New format for board config
* Fix Bluetooth dependencies for minimal package - add rfkill to family related installs
* Moving networkd-dispatcher from minimal image
* Cubox-i: update default config
* Improving umount process
* Add purgesource feature
* Add FULL_DESKTOP to install few more applications on top of our desktop - notebooks should * rk3399 default: adjust patches and configuration
* Enable full desktop on most powerfull boards and notebooks
Signed-off-by: Igor Pecovnik <igor.pecovnik@gmail.com>
Further I introduced the variable CRYPTROOT_PARAMETERS to have the ability to pass more options to the cryptsetup command.
I've test this on an Odroid HC2 (XU4) with default kernel configuration, full OS image, "next" branch and stretch as server:
- default without encryption
- encryption with user sepcific cryptsetup parameters
- encryption without user specific cryptsetup parameters
* helios4: next branch use u-boot 2018
use new u-boot based on upstream 2018
Signed-off-by: Aditya Prayoga <aditya@kobol.io>
* helios4: Tweak fancontrol configuration
Adjusted MINSTART and MINSTOP to suit both old and new fan.
Adjusted TEMP threshold so fan would stop or run in minimal speed when
the system idle.
Fixed wrong MINPWM value.
URL:https://wiki.kobol.io/pwm/#configuration-file
Signed-off-by: Aditya Prayoga <aditya@kobol.io>
* kernel: mvebu-next: use upstream helios4 dts
Helios4 device tree has been merged on upstream since 4.19.
Rework the patch to produce same device tree.
URL:https://patchwork.kernel.org/patch/10449393/
Signed-off-by: Aditya Prayoga <aditya@kobol.io>
* Helios4: Use boot-mvebu-next bootscript
Use boot-mvebu-next.cmd that make use of upstream's Generic Distro
Configuration.
Since loadaddr and fdt_addr varibales are no longer required, remove the
patch.
Signed-off-by: Aditya Prayoga <aditya@kobol.io>
* Helios4: mvebu-next: Add workaround for SPI and SATA concurrent access issue
Concurrent access on SPI NOR and SATA drives can lead to unstable SATA.
Therefore as workaround, disable SATA controller when SPI flash access
is needed and make it as user configurable item in armbianEnv.txt
This workaround might applies to Clearfog too.
Refer to
Commit 59af84c07c ("Helios4: Add SPI bootloader install feature
(#1126)")
Signed-off-by: Aditya Prayoga <aditya@kobol.io>
* Bootscripts: Fixed boot-mvebu-next.cmd
The environment setting (armbianEnv.txt) is loaded to RAM located on
${load_addr} but the env import use wrong address (${pxefile_addr_r}).
bootargs still expect ${boot_interface} which carried over from boot-
marvell.cmd. Upstream's distro configuration use ${devtype} instead.
Signed-off-by: Aditya Prayoga <aditya@kobol.io>
* uboot: mvebu-next: only apply DT fixup script if it exists
* [ buildscript ] Add FORCE_BOOTSCRIPT_UPDATE option
If enabled bootscript will get updated during bsp upgrade.
* Helios4: Enable FORCE_BOOTSCRIPT_UPDATE by default in board config.
* Helios4: Added boot-marvell.cmd compability to u-boot 2018
Revert the changes to use boot-mvebu-next.cmd instead of boot-
marvell.cmd to prevent unbootable system due to incompatibility between
u-boot 2013.01 and boot-mvebu-next.cmd
This reverts commit 0f17ecb233 ("Helios4: Use boot-mvebu-next
bootscript")
U-Boot 2018 will failed load dtb and script due to missing some
variables on boot-marvell.cmd. This will render the system unbootable.
Re-added and update loading-boot-scr.patch for backward compatibility
Signed-off-by: Aditya Prayoga <aditya@kobol.io>