Commit Graph

2187 Commits

Author SHA1 Message Date
Gunjan Gupta
9131aac1c9 Switch entirely to fifteenhex repo for xradio driver as it performs better 2023-12-02 17:30:31 +05:30
Ricardo Pardini
983d8258d9 armbian-kernel: don't force =n for DEBUG_INFO_DWARF5 and DEBUG_INFO_BTF
- really can't remember why I added those, and they cause trouble for BTF
  - See https://www.kernel.org/doc/html/next/bpf/btf.html
  - `CONFIG_DEBUG_INFO_BTF: Generate BTF typeinfo`
    - _Generate deduplicated BTF type information from DWARF debug info. Turning this on expects presence of pahole tool, which will convert DWARF type info into equivalent deduplicated BTF type info._
2023-11-29 20:00:13 +01:00
Igor
e95fbdcfad
Add simple patch system as a standalone service (#5935)
Sometimes we need to fix minor issues like changing the key or fixing other small problem on live OS. We can ship this as a part of BSP package, but its handling should be made easy.

This downloads script from CDN, verify its signature and executes after apt upgrade starts installing packages.

* Record patch output to syslog
* Enable armbian-live-patch as additional service and run patch mechanism at startup
* Additional security check
2023-11-27 13:01:20 +01:00
Ricardo Pardini
91a3607c0f wsl2: detect Armbian-built wsl2 kernel as well as Microsoft's default kernel
- previous commit introduces Armbian wsl2 kernels, might as well detect them
2023-11-27 11:14:01 +01:00
Igor
1f1d77cff3
Move netplan renderer selection to distro common selection (#5971) 2023-11-26 23:18:40 +01:00
Ricardo Pardini
4e37b276d1 bash: run shellfmt, no changes 2023-11-25 13:38:30 +01:00
Ricardo Pardini
99d4abf7a1 drivers_network: replace all "branch:xxx" references with sha1; add notice about it 2023-11-25 13:38:10 +01:00
Ricardo Pardini
1dd4a95a77 drivers-harness: hash the whole of patch/misc; throw error if driver does fetch_from_repo with mutable ref
- this should make drivers hash consistent, at the expense of being moar tiresome
- _any_ changes at _any_ patches or drivers-related bash code will cause _all_ kernels to be rebuilt
  - opposed to "some changes caused all kernels to be rebuilt"
2023-11-25 13:38:10 +01:00
Ricardo Pardini
67b3e0dd07 git: fetch_from_repo(): introduce FETCH_FROM_REPO_CALLBACK_IF_REF_MUTABLE
- function defined in FETCH_FROM_REPO_CALLBACK_IF_REF_MUTABLE is called if reference is mutable
  - which is anything that's not `commit:` or `tag:`
    - and really there's no guarantee that `tag:` is immutable, but lets assume
2023-11-25 13:38:10 +01:00
Ricardo Pardini
2a9ec6d844 stacktraces: introduce get_stacktrace_element_by_index() to get a specific stracktrace element 2023-11-25 13:38:10 +01:00
Ricardo Pardini
7e2e557532 armbian-kernel: enforce CONFIG_LOCALVERSION in .config as empty 2023-11-25 13:38:01 +01:00
Ricardo Pardini
77e428a87c artifact-uboot: fix hashing for uboot_custom_postprocess old-timey non-hook
- also, for extension style hook `post_uboot_custom_postprocess`, don't do it 3 times, just once
- this commit will cause rebuild of all u-boots
  - and that's a good thing, many custom changes in family code (eg ddr change in rk322x) were being ignored
  - thanks @paolosabatino
2023-11-25 13:37:49 +01:00
amazingfate
aff6915fba use mirror.ghproxy.com as default url of ghproxy 2023-11-21 17:06:14 +01:00
amazingfate
81c460e3bf use GHPROXY_ADDRESS to customize ghproxy url 2023-11-21 17:06:14 +01:00
Gunjan Gupta
c45a63e63b Add option to include home directory in the final image 2023-11-21 20:29:37 +05:30
Ricardo Pardini
1e184f14af core extensions: fix: don't redefine extension_function_info when recursing
- otherwise when there's a chain of enable_extension() we lose the original info
2023-11-19 22:31:33 +01:00
Alban Browaeys
312738fa70 Revert "Add a patch that breaks compilation of wifi driver 8723ds on a kernel 6.6 (#5912)"
Fix is now merged in upstream master branch.

This reverts commit 563de0bd8a.
2023-11-17 06:47:47 +01:00
Igor Pecovnik
b5d5accd77 Keep the VENDOR in motd after the update 2023-11-16 07:26:43 +01:00
Igor
6bcf74f2e7
Anonymize default build engine settings (#5865)
Improve naming confusion by changing build framework defaults. Set framework defaults VENDOR to Armbian-unofficial for self build images. Unsupported boards and unsupported distribution have framework defaults, except VENDOR and VENDORURL. We build images with predefined values.
2023-11-15 22:00:21 +01:00
Ricardo Pardini
28b87b0641 initrd: cache: add /etc/modprobe.d to cache key (eg for MODULES_BLACKLIST) 2023-11-15 00:32:16 +01:00
Igor
563de0bd8a
Add a patch that breaks compilation of wifi driver 8723ds on a kernel 6.6 (#5912)
+ attach sources to commmit ID
2023-11-14 18:21:21 +01:00
Igor
a1294f470e
Fixing wrong Makefile location when adjusting wireless driver rtl8723cs 2023-11-14 13:45:20 +01:00
Igor
dc5d461c95
Move Makefile section from patch (#5909)
There are many changes in this file and its impossible to cover this with a patch for now current and all kernels back
We are using same hack in UWE drivers.
2023-11-14 12:04:15 +01:00
Ricardo Pardini
46728e94f2 rootfs-to-image: create_image_from_sdcard_rootfs(): ignore /home during rsync; fixes #5864 2023-11-06 16:17:21 +01:00
Igor
d799b5a6df
Remove cpufrequtils from trixie as its not / will not be present anymore (#5881)
* Remove cpufrequtils from trixie as its not / will not be present anymore
* Remove aggregation hacks for cpufrequtils while adding another condition
2023-11-03 08:10:59 +01:00
Ricardo Pardini
1f436bddba initrd: if debugging, don't filter update-initramfs output (errors might be lurking in there) 2023-10-31 08:08:06 +01:00
Ricardo Pardini
6186a41c2b patching: if 0 files left to commit after config-filtering, don't commit nor rewrite the patches
- this is mostly useful for Makefile's and DT patches which should end be bare instead of null-patched
2023-10-26 14:48:49 +00:00
Ricardo Pardini
91094149de base-files / apt-utils: stop trying non "-updates" repos when looking for Ubuntu LTS release package
- otherwise, when the lookup at "jammy-updates" fails (due to server instability), and "jammy" works, we end up with the wrong version
- non-LTS releases don't have the "-updates" repo, so don't even try, which should make everything faster
- TODO: yet-another opportunity to have a release metadata file, otherwise this is yet-another place where we list "jammy"
2023-10-21 13:58:37 +02:00
Gunjan Gupta
2980065b8c uwe5622: Fix kernel warning for incorrect netdev-dev_addr 2023-10-20 17:37:40 +05:30
Ricardo Pardini
2b6a90484a docker launcher: don't lose track of the wanted host_release when setting using Armbian base image
- host_release (wanted_release_tag) was being re-computed from  DOCKER_ARMBIAN_BASE_IMAGE
- DOCKER_ARMBIAN_BASE_IMAGE might have been changed from "<os>:<release>" if DOCKERFILE_USE_ARMBIAN_IMAGE_AS_BASE != no
- that would cause host_release to be "armbian-ubuntu-lunar-latest", not "lunar"
  - which would cause python2/python2-dev to be installed, which would cause Dockerfile build to fail
2023-10-20 12:06:32 +00:00
Ricardo Pardini
b3fb316346 cli-patch: don't ask about desktop/server builds during patch rewrite/to-git
- add to-do for real fix later
2023-10-18 14:58:46 +00:00
Gunjan Gupta
dc8c46c27e lib: kernel-config: fix menuconfig dialog not appearing when building image with KERNEL_CONFIGURE=yes 2023-10-18 16:16:42 +05:30
Ricardo Pardini
35b4859b9c pipeline: parallel (threaded) mapper-oci-uptodate.py 2023-10-14 21:49:52 +02:00
Ricardo Pardini
f3c3fe8e82 ubuntu: add mantic (23.10), symlinks to lunar 2023-10-14 09:40:45 +00:00
Ricardo Pardini
bba856bb57 partitioning: efi: introduce UEFI_MOUNT_POINT_SKIP_FSTAB, if set to yes, skips /etc/fstab entry for the ESP
- sometimes we just don't want the ESP listed in the fstab, otherwise works the same
2023-10-14 00:03:12 +02:00
Ricardo Pardini
daf65b3f93 armbian-desktop: remove "Conflicts: gdm3"
- if you installed gdm3 (even if you don't use it), you lose Armbian wallpapers
2023-10-14 00:01:07 +02:00
Ricardo Pardini
0cb41b2635 rootfs-desktop: disable sddm as well as lightdm and gdm3 in desktop_postinstall()
- lightdm, gdm3 already had this
2023-10-14 00:01:07 +02:00
Ricardo Pardini
568ed3ae39 pipeline: don't bomb when logging int value's length (GHA outputs) 2023-10-13 21:05:33 +02:00
Ricardo Pardini
ed39cb04fb pipeline: add hard 17*30 limit to number of total matrix jobs
- show size of each GHA output in logs
2023-10-13 20:13:10 +02:00
Ricardo Pardini
fed7bf63f5 pipeline: disable GHA output of non-chunked version in bash
- (python sets its own outputs for chunks)
2023-10-13 18:57:43 +02:00
Ricardo Pardini
0047f8e3bd dpkg-deb: rename fakeroot_dpkg_deb_build -> dpkg_deb_build 2023-10-13 18:04:56 +02:00
Ricardo Pardini
5ed338fb60 dpkg-deb: don't use fakeroot, we're already root; don't add fakeroot dep either 2023-10-13 18:04:56 +02:00
Ricardo Pardini
3b54d17480 patching: accept a sha1 in BASE_GIT_TAG (as well as branch or tag)
- just for convenience
2023-10-13 18:04:14 +02:00
Ricardo Pardini
1c5add5e51 don't break downloads if GITHUB_SOURCE is unset
- fixes f200587b86 from https://github.com/armbian/build/pull/5791
2023-10-10 20:25:53 +02:00
iysheng
f200587b86 Use GITHUB_SOURCE to accelerate download files from github 2023-10-08 16:45:00 +02:00
Gunjan Gupta
571997b053 cli: add command to rewrite/refresh kernel configs 2023-10-06 02:17:51 +05:30
Ricardo Pardini
1dfc8da2e8 base-files: add the upstream version both to the artifact_version and the reversioned; possibly fixes #5702
- OCI tags can't have "+" or "~" so replace those with "--" before using in OCI tag
- apt (repo) version will have whatever upstream has, including "+" and/or "~"
2023-10-03 14:12:50 +02:00
Ricardo Pardini
19226a9c27 docker (launcher): fix DOCKER_PASS_GIT=yes to actually work
- it still sucks (very slow) but is a way to get ${SRC}/.git in Docker if needed
  - eg for patching archeology
2023-10-03 14:11:42 +02:00
Ricardo Pardini
cacd3c9b08 docker (launcher): fix un-needed grep escape \: (fixes "grep: warning: stray \ before :" on recent coreutils) 2023-10-03 14:11:42 +02:00
Ricardo Pardini
ef01d98347 patching: show auto-patch'ed in summary table (in blue); remove spurious warnings 2023-10-03 14:10:46 +02:00
Ricardo Pardini
a547d3b101 patching: show the patch number for multi-patch mbox files in summary table 2023-10-03 14:10:46 +02:00
Ricardo Pardini
50895a24ee patching: enhance the DT Makefile Autopatcher to work with armhf's new 6.5 subdir Makefiles as well as arm64
- arm64: one-rule-per-dtb
- arm32: single-rule, multi-dtb
2023-10-03 14:10:46 +02:00
Ricardo Pardini
4551cc2dc5 artifact-kernel: remove spurious warning when git TTL is set 2023-10-03 14:10:35 +02:00
Ricardo Pardini
41d79906c3 rockchip64 + sunxi*: drivers_network: add patch for uwe5622, fixing build on 6.6.y 2023-10-03 13:54:03 +02:00
Ricardo Pardini
0ebfa3acde rockchip64 + sunxi*: drivers_network: enable uwe5622 driver also for 6.6 2023-10-03 13:54:03 +02:00
Ricardo Pardini
71d5548c57 cli: introduce rewrite-kernel-patches; fix kernel-patches-to-git; refactor obtain_kernel_git_info_and_makefile()
- `kernel-patches-to-git` wasn't providing the needed `KERNEL_GIT_SHA1` for kernel drivers
  - refactor `obtain_kernel_git_info_and_makefile()` out of `artifact_kernel_prepare_version()` so we can reuse
- introduce `rewrite-kernel-patches`, which is just an alias to `kernel-patches-to-git` with `REWRITE_PATCHES=yes`
2023-09-29 18:46:52 +02:00
Ricardo Pardini
9324d1ec82
pipeline: output-gha-matrix: add self_hosted (yes/no) and fetch_depth (0/1) (#5750)
```
# For each item in chunk, check if it is going to run in a GH-hosted runner or self-hosted, and set some matrix variables
# accordingly; self_hosted: yes/no, and more specifically, fetch_depth, which is 0 for self-hosted, and 1 for GH-hosted.
# The reasoning for this is that git clones are much faster if not shallow on self-hosted, but much slower on GH-hosted.
```

- `self_hosted` -> `shosted` for brevity in JSON matrix
- `fetch_depth` -> `fdepth` for brevity in JSON matrix
2023-09-29 16:55:09 +02:00
Ricardo Pardini
000f491617 kernel/memoize: allow customizing memoize's default TTL of 3600 seconds; allow customizing kernel TTL via KERNEL_GIT_CACHE_TTL 2023-09-29 14:25:58 +02:00
Ricardo Pardini
800d92045d tools: patching: don't rewrite auto-generated patches (eg, drivers) 2023-09-29 08:48:01 +02:00
Andrew Davis
75bbc299fc extensions: Fix dump_extension_method_sources_functions() to iterate
The function dump_extension_method_sources_functions() dumps the content
of a single argument function. It is used in several spots were an array
is passed instead. We could fix all these call sites to iterate the call,
or we could change the called function to do the iteration. Do the latter.
2023-09-24 20:18:47 +02:00
waybeforenow
0aab4c59a3 add xorg.conf.d/01-armbian-defaults.conf to conffiles 2023-09-19 20:08:55 +02:00
Gunjan Gupta
2d0447b391 uwe5622: fix compilation for sunxi64 on 6.3+ kernels 2023-09-19 20:08:18 +02:00
Kreyren
ae0f1189bd
cli-flash.sh: replace x$varx != xx check with sane declaration (#5713)
Cherrypicked from https://github.com/armbian/build/pull/5689
2023-09-15 17:13:44 -07:00
c0rnelius
fdc1966847
RTW88: linux-6.x.y (#5697)
This is just a cosmetic change. Patches have been consolidated
into one patch within each corresponding linux version directory.

Added: linux-6.6 (RC-1)
Removed: linux-6.2/6.3

Signed-off-by: Patrick Yavitz <pyavitz@xxxxx.com>
Co-authored-by: Patrick Yavitz <pyavitz@xxxxx.com>
2023-09-11 20:18:36 -04:00
amazingfate
6d981baba6 rockchip64: bump rockchip64-edge kernel to 6.5 2023-09-04 14:55:50 +02:00
Gunjan Gupta
ef3f252d49 allwinner: bring back uwe5622 back on legacy kernel 2023-09-04 14:37:10 +02:00
Gunjan Gupta
46e756540e xradio: fix compilation for 6.1+
Also added some cleanup fixes to silence some of the compiler warnings,
fixes for issues during inserting and removing xradio module and fixes
for possible data corruption on vmmaped stack.

All of these fixes were taken from https://github.com/fifteenhex/xradio
2023-09-04 14:37:10 +02:00
c0rnelius
dbe8ea49b0
patch: misc: rtw88: wireless-next: 2023-08-25 (#5653)
* patch: misc: rtw88: wireless-next: 2023-08-25

Updated: 6.1 / 6.4
Added: 6.5

For doc sake, this update makes 6.1 slightly differrent than 6.4 and
6.5 in one particular area of main.c.

As shown here:
7746e2fa87

6.1 requires we use del_timer_sync, where the above releases use
timer_delete_sync.

Tested-on: ODROID-C4 X96-AIR BPI-CM4 (linux 6.x.y)
Signed-off-by: Patrick Yavitz <pyavitz@xxxxx.com>

* driver_rtw88: `linux-version compare "${version}" ge 6.1`

Suggested-by: @viraniac
Signed-off-by: Patrick Yavitz <pyavitz@xxxxx.com>

---------

Signed-off-by: Patrick Yavitz <pyavitz@xxxxx.com>
Co-authored-by: Patrick Yavitz <pyavitz@xxxxx.com>
2023-08-29 13:15:59 -04:00
Ricardo Pardini
ee565514c9 bsp-cli: allow hooks to cleanly add code to the bsp-cli postinst; fix helios4 to match
- bsp-cli: `postinst` is now generated _after_ the hooks are run
  - hooks are allowed to append to `postinst_functions` array
  - hooks are _not_ allowed to modify `DEBIAN/postinst` directly anymore (it won't even be there)
- rewrite the postinst stuff in `helios4`'s `family_tweaks_bsp()` to use new way
- introduce `add_file_from_stdin_to_bsp_destination()`, a helper for easy heredoc-based adding of files to bsp-cli
  - First and only argument is the destination path, relative to the root of the package -- do NOT include $destination -- it is already included.
  - Containing directory, if any, is created automatically (no more "mkdir -p x; cp y x/z")
  - The full path (including $destination) is set in $file_added_to_bsp_destination, declare in outer scope to get it if needed.
2023-08-24 11:45:45 +02:00
Ricardo Pardini
d402092682 pipeline: use ncores * 4 for info gathering 2023-08-23 21:35:02 +02:00
Ricardo Pardini
274d394ab2 pipeline: handle exit_with_target_not_supported_error() (retcode 44) as warning and not error
- split errors and warnings into multiple lines, so a bit easier to see in the logs what the real error was
- also turn down a few spurious warnings to debugs
2023-08-23 21:35:02 +02:00
Ricardo Pardini
688e415832 pipeline: add userspace inventory capabilities
- digs into config/distributions and config/desktops for info
- this produces `output/info/all_userspace_inventory.json`
  - this is now passed down to the `targets-compositor` in `cli-jsoninfo`
- `targets-compositor` now accepts `userspace:` as `items-from-inventory`
- extra: add `targets-composed` CLI command, to stop after targets-compositor
2023-08-23 21:35:02 +02:00
Ricardo Pardini
a9d5969f21 config_post_main: sanity checks for RELEASE (vs ARCH) and RELEASE+DESKTOP_ENVIRONMENT (vs ARCH)
- the interactive menus didn't allow interactive users to select invalid combinations...
- ... but if specified directly on cmdline, no checks were done at all.
- introduce `exit_with_target_not_supported_error()`, which is just `exit_with_error` (code 43) but with code 44
  - this way the targets pipeline can just warn instead of break;
  - sometimes it's easier multiplying matrixes and skipping the few that can't be built
2023-08-23 21:35:02 +02:00
amazingfate
1eaf25ad3d add mainline kernel mirror support 2023-08-23 21:34:48 +02:00
Igor Pecovnik
27df94e924 Timezone select is too closed on status of the countries 2023-08-23 21:34:15 +02:00
Gunjan Gupta
36f0425358 rtl8811CU, rtl8723cs: Fix module build failure on 6.5 kernel 2023-08-23 20:52:25 +02:00
Ricardo Pardini
11df81403d config/lib/exts: run shellfmt
- `bash lib/tools/shellfmt.sh`
- mostly spacing changes that accumulated over time
2023-08-22 14:28:14 +02:00
Gunjan Gupta
1d6a779ed1 Drop HOST OS that doesnot support crust compilation 2023-08-22 13:03:51 +02:00
Ricardo Pardini
7008b14cd5 RFC: partitioning: stop disabling 64bit and metadata_csum for mkfs.ext4
- this has been a contention point for many years
2023-08-22 08:16:24 +02:00
Ricardo Pardini
5112156a57
rootfs-image: don't fail synaptic/xapian index creation if update-apt-xapian-index is not there (#5620)
- allows us to `remove_package apt-xapian-index synaptic` in userpatches
2023-08-22 08:15:40 +02:00
Ricardo Pardini
64b5220853
debian: add Trixie (Debian 13, testing) csc target & build host (#5621)
- Trixie, like Bookworm and Sid, does not have python2 anymore
2023-08-22 08:14:55 +02:00
WinDos6.22
bd339fca3a
Add new Linux Mint release support in host-release.sh (#5540) 2023-08-21 22:48:52 +12:00
Igor Pecovnik
fb4774e2f4 Add two popular MT7921U devices to the driver pid so they work OOB
Signed-off-by: Igor <igor@armbian.com>
2023-08-20 19:19:44 +02:00
Kreyren
09fe68cd59 Address https://github.com/armbian/build/pull/5597#issuecomment-1679089917 2023-08-17 22:09:33 +02:00
Kreyren
d9c10acb07 Better output
Address https://github.com/armbian/build/pull/5597#issuecomment-1679030905

@viraniac plz review
2023-08-17 22:09:33 +02:00
Kreyren
40bfcfe0f1 utils-dpkgdeb: Add alert for compressing
The command takes long time to continue and it makes it seem like the build halted, so this adds an alert to mitigate this
2023-08-17 22:09:33 +02:00
Igor
2a8cb5793f Removing exceptions needed to support riscv64 withing Debian
Signed-off-by: Igor <igor@armbian.com>
2023-08-17 22:09:05 +02:00
Ricardo Pardini
24ee25e0c9 trap-logging: don't export markdown logs and GHA summary unless GHA_EXPORT_MD_SUMMARY=yes (try to make unicorns go away) 2023-08-12 12:04:22 +02:00
Ricardo Pardini
69b212a7d7 artifact-{bsp-cli,kernel,uboot}: fix missing vars_config_hash "variables hash" in artifact_version_reason 2023-08-12 09:58:32 +02:00
Ricardo Pardini
83eff4aa3c kernel: fix: when KERNEL_SKIP_MAKEFILE_VERSION=yes, use 1- prefix for artifact_version (eg odroidxu4) 2023-08-12 09:58:32 +02:00
Ricardo Pardini
9de2ccdbdf start-end: undo unintentional damage done to python/python2 compatibility symlinks inside the BIN_WORK_DIR 2023-08-12 09:58:32 +02:00
Ricardo Pardini
df34679533 store dict of artifacts actually installed in image; use it to freeze (BSPFREEZE=yes) and check hashes without spurious errors
- eg: `linux-headers` might, or might not, be installed; same with bsp-cli transitional
- accidentally fixes [AR-1802]
2023-08-12 09:58:32 +02:00
Ricardo Pardini
622ef30f3c adapt obtain_complete_artifact() and friends to new reversioned scheme; introduce UPLOAD_TO_OCI_ONLY=yes for deploying to remote cache
> tl-dr: only deploys to remote OCI if `UPLOAD_TO_OCI_ONLY=yes`; stop leaving junk behind in local cache in many situations

- simplify CLI artifact building parameters and behaviour
    - `ARTIFACT_USE_CACHE` is now deprecated, and its behaviour is the default
    - for _any_ uploading to OCI to occur, `UPLOAD_TO_OCI_ONLY=yes` **must** be present; in this case, reversioning is not done
    - `FORCE_ARTIFACTS_DOWNLOAD` is completely removed (use `download-artifact` instead)
    - `cli_obtain_complete_artifact()`'s and `build_artifact_for_image()`'s reversioning is now moved to common `obtain_complete_artifact()`
- `standard_artifact_reversion_for_deployment()`:
    - check for hashed deb existence only if reversioned does not exist
    - touch the reversioned file if it already exists; helps to clean up junk later
    - delete hashed version after reversioning, so we don't leave trash behind
        - unless in `download-artifact` mode, which `touch`es the hashed version
        - we can later delete old files from packages-hashed to keep junk under control
- refactor `obtain_complete_artifact()`
    - extract function `artifact_dump_json_info()` since obtain is large enough already
    - when deploying to remote, always ignore all local and remote caches
    - introduce `artifact_is_available_in_revisioned_local_cache()`
        - if not deploying to remote, and revisioned cache exists, use it directly
        - if deploying to remote, reversioned is not checked and not created
    - if deploying to remote, force `DEB_COMPRESS=xz`
    - if deploying to remote, completely remove the local cache base dir after upload is done (no more junk leftover)
2023-08-12 09:58:32 +02:00
Ricardo Pardini
413212ab24 artifacts: obtain: back to using flat output/debs structure, include revisioned and hashed in filename, but no subdirectories
- handle the `global` artifact_deb_repo case specially (they go in the root, not subdir)
2023-08-12 09:58:32 +02:00
Ricardo Pardini
bd5a577e40 pipeline: streamline output-debs-to-repo-json to pass down info and avoid parsing paths completely 2023-08-12 09:58:32 +02:00
Ricardo Pardini
4624b581da pipeline: force compositor to include REVISION= just like it already did for BETA=
- this way the prepare step's REVISION (possibly passed via CLI parameter) is always sovereign
2023-08-12 09:58:32 +02:00
Ricardo Pardini
be11e171a8 main-config: allow using REVISION from env or command-line param; ensure it begins with digit 2023-08-12 09:58:32 +02:00
Ricardo Pardini
2142f73b97 hashed-OCI-revisioned-debs: introduce "reversioning" of .deb packages
> tl-dr:
> - maximize OCI cache hit ratio across nightlies/releases/PRs/etc;
> - publish simple `Version:`'s that don't include a crazy hash in repo and images
> - introduce `output/packages-hashed` directory
> - radically change the `output/debs` directory structure

- simplify artifact's `prepare_version()` method for `deb` and `deb-tar` artifacts:
  - `artifact_base_dir` and `artifact_final_file` will now be auto-calculated; thus removed from each artifact (except `rootfs`)
  - `artifact_deb_repo` ("global", "jammy", "bookworm") is now required; "global" means common across all RELEASES
  - `artifact_deb_arch` is now required, "all" is arch-independent, otherwise use `${ARCH}`
  - `artifact_map_debs` is now auto-calculated based on the above, and shouldn't be specified manually
  - `artifact_final_version_reversioned` is optional, and can force the final version of the artifact (specific for the `base-files` case)
  - artifacts that need special handling for reversioning can add function names to `artifact_debs_reversion_functions` array (`base-files` and `bsp-cli` cases)
  - artifacts `prepare_version()` should set `artifact_version`, but _never_ include it in other variables; `artifact_version` is now changed by framework after `prepare_version()` returns
- no longer use/refer/mention `${REVISION}` when building packages. All packages should be `${REVISION}`-agnostic.
- `${REVISION}` (actually, `artifact_final_version_reversioned`) will be automatically swapped in the `control` file during reversioning
- `fakeroot_dpkg_deb_build()` now takes exactly two arguments: the directory to pack, and the deb ID (key of `artifact_map_packages` dict); add this change in all the artifact's code for this
- `obtain_complete_artifact()`:
  - automatically adds `-Rxxxx` "revisioning-hash" to `artifact_version`, by hashing the revisioning functions and any `artifact_debs_reversion_functions` set
  - calculates more complex subdirectory paths for both the `output/packages-hashed` and `output/debs`/`output/debs-beta` directories
    - with the new subdirectories we can be sure a re-version is already done correctly and can skip it (eg, for partial `download-debs` re-runs)
    - in the future we can automatically clean/remove old versions that are no longer relevant based on the dir structure
    - exports a lot more information to JSON, including the new subdirectory paths
  - comment-out code that implemented `skip_unpack_if_found_in_caches`, I'm very unsure why we had this in the first place
- `obtain_artifact_from_remote_cache()`
  - for `deb` type artifacts, OCI won't preserve the subdirectory structure, so move downloaded files to the correct subdirectory manually
  - this is not needed for `deb-tar`, since that can preserve the dir structure itself
- introduce `artifacts-reversion.sh` and its main function `artifact_reversion_for_deployment()`
  - this has the logic for reversioning .deb's, by `ar`-unpacking them, changing `control.tar` (and possibly `data.tar`), handling `.xz` compression, etc.
  - also handles hashing those functions, for consistency. Any changes in reversioning code actually change the artifact itself so we're not caught by surprise
  - by default, it changes `control` file only:
    - replace `Version:` (which is the hash-version originally) with `artifact_final_version_reversioned` (which is mostly just `${REVISION}`)
    - add a custom field `Armbian-Original-Hash:` with the original hash-version
  - `artifact_reversion_for_deployment()` is called by
    - new CLI wrapper `cli_obtain_complete_artifact()`, used for CLI building of specific artifact, but also for `download-artifact`
    - `build_artifact_for_image()` used during image build
- `armbian-bsp-cli-deb.sh`: move `${REVISION}` related stuff from the main package build to new reversioning functions.
- `artifact-armbian-base-files.sh`: move `${REVISION}` related stuff from the main package build to new reversioning functions.
- `kernel`:
  - add some custom fields to `DEBIAN/control`:
    - `Armbian-Kernel-Version:` / `Armbian-Kernel-Version-Family:` (for future use: cleanup of usage of `Source: ` field which should be removed)
  - declutter the `Description:` field, moving long description out of the first line
  - obtain `IMAGE_INSTALLED_KERNEL_VERSION` from the reversioned deb (this is still a hack and has not been fixed)
- `uboot`:
  - declutter the `Description:` field, moving long description out of the first line
  - use the reversioned .deb when deploying u-boot to the image
- `main_default_build_packages()` now stores reversioned values and complete paths to reversioned .deb's
- `list_installed_packages()` now compares custom field `Armbian-Original-Hash: `, and not the `Version:` to make sure debs in the image are the ones we want
- `install_artifact_deb_chroot()` is a new wrapper around `install_deb_chroot()` for easy handling of reversioned debs
  - use it everywhere `install_deb_chroot()` was used in `distro-agnostic.sh` and `distro-specific.sh`
2023-08-12 09:58:32 +02:00
Ricardo Pardini
a876d0f882 pipeline: output-debs-to-repo-json.py: adapt to new reversioned JSON info 2023-08-12 09:58:32 +02:00
Ricardo Pardini
7129f7ac28 uboot: drop CHOSEN_UBOOT, change deployment directory, remove uboot_name as temp_dir prefix
- change deployment dir to not include REVISION or ARCH
- get rid uboot's CHOSEN_UBOOT, REVISION and ARCH in the directory name.
- no two u-boot debs can be installed in the same machine anyway
2023-08-12 09:58:32 +02:00
Ricardo Pardini
1241e2c4cb kernel/tmpfs: remove usage of the kernel-specific tmpfs for temporary kernel .deb's, now build directly to packages-hashed dir 2023-08-12 09:58:32 +02:00
Ricardo Pardini
a592ab763c hashed-OCI-revisioned-debs: build debs in PACKAGES_HASHED_STORAGE, not DEB_STORAGE (temp commit, will be rewritten by a later commit)
- fakeroot_dpkg_deb_build() now only takes a single argument, the unpacked package dir
2023-08-12 09:58:32 +02:00
Ricardo Pardini
ec0a87efb5 hashed-OCI-revisioned-debs: get completely rid of artifact_prefix_version 2023-08-12 09:58:32 +02:00
Ricardo Pardini
6e5b8ffba0 artifacts: don't keep deb-tar's .tar after uploading to OCI
- they won't ever be used after this, and just accumulate trash for no reason
2023-08-12 09:58:32 +02:00
Ricardo Pardini
c347e83fce debs: all produced debs now get a placeholder DEBIAN/changelog and a usr/share/doc .gz changelog with hash 2023-08-12 09:58:32 +02:00
Ricardo Pardini
9d2f8f1b26 kernel-debs: avoid showing tree of kernel modules if they've not been built
- for example `EXT=nomod` causes no modules to be built
2023-08-12 09:58:32 +02:00
Ricardo Pardini
c17a041637 prepare_host: handle PRE_PREPARED_HOST inside prepare_host_init() so WORKDIR etc is always available 2023-08-12 09:58:32 +02:00
Ricardo Pardini
0251d65b7a repo-reprepro.py: set -e & pipefail 2023-08-12 09:58:32 +02:00
Ricardo Pardini
624ac450e3 trap-logging: just discard logs dir when ANSI_COLOR=none 2023-08-12 09:58:32 +02:00
amazingfate
ecac08cc8e kernel image files use standard flavor 2023-08-11 17:06:38 +08:00
Ricardo Pardini
ed02ac2447 initrd: fix undeclared variable update_initramfs_cmd 2023-08-09 11:20:28 +02:00
Paolo
c27739943d
rockchip64: bump rockchip64-edge kernel to 6.4 (#5552)
undefined
2023-08-04 10:39:13 +02:00
Gunjan Gupta
154fdb83f9 Fix cryptroot setup with flash-kernel and ssh unlock on newer dropbear versions 2023-08-02 08:30:27 +02:00
Julian Sikorski
3d7e67431f Fix compiling rtl8189es, rtl8189fs and rtl8192eu 2023-07-29 15:47:24 +02:00
Ricardo Pardini
5db0066650 kernel / drivers-harness: use the kernel git SHA1 ($KERNEL_GIT_SHA1) instead of $KERNEL_MAJOR_MINOR for drivers cache key
- this should avoid (late) patching errors that might happen during a point release bump like `6.4.5` -> `6.4.6` cos we'd be using the wrong cached drivers patch
- using the SHA1 will instead (possibly) trigger the "real patching failure", during drivers-harness when building a new driver patch cache
- also try to cleanup old caches in the old format so we've not many leftovers -- each patch is ~150mb
2023-07-27 21:32:42 +02:00
Ricardo Pardini
953b9eb823 display-alert: strip newlines as well as ANSI colors if ANSI_COLOR=none
- `ANSI_COLOR=none` is used when we're driving compile.sh from Python
- some debugging messages had newlines in them, thus making Python mark those as `[LEAKED]`
2023-07-27 21:32:30 +02:00
Ricardo Pardini
ee3059eb2f pipeline: debs-to-repo-download is now done in parallel; default cores*2 limited to 16 or PARALLEL_DOWNLOADS_WORKERS
- also avoid log archiving during individual download jobs via SKIP_LOG_ARCHIVE=yes
- I've tested with PARALLEL_DOWNLOADS_WORKERS=16 and it saturates my gigabit link, ghcr.io is great at reads
- more than ~16-ish might be too much though
2023-07-27 21:32:19 +02:00
Ricardo Pardini
b92575381a pipeline: inventory all board vars; add not-eos-with-video; introduce TARGETS_FILTER_INCLUDE
> How to use:
>
> `./compile.sh inventory` - does just the board inventory; look for output in `output/info`
>
> `./compile.sh targets-dashboard` - does inventory, targets compositing, and images info; look for output in `output/info`, read the instructions output by the command if you want to load the OpenSearch dashboards.
>
> `./compile.sh targets` - does the full targets compositing and artifacts, look for output in `output/info`
>
> If you don't have a `userpatches/targets.yaml`, _one will be provided for you_ defaulting to Jammy minimal CLI
> and Jammy xfce desktop, for all boards in all branches. You can pass filters via `TARGETS_FILTER_INCLUDE=...` to narrow.
>

- board JSON inventory:
  - more generic regex parsing of variables from board files:
    - all top-level (non-indented) variables are parsed and included in the JSON board inventory
    - this allows us to add new variables to the board files without having to update the parser
    - variables can be bare, `export` or `declare -g`, but **_must_ be quoted** (single or double) and UPPER_CASE
  - some special treatment for certain variables:
    - `KERNEL_TARGET` is parsed as a _comma-separated_ list of valid BRANCH'es
    - `BOARD_MAINTAINER` is parsed as _space-separated_ list of valid maintainer GH usernames as `BOARD_MAINTAINERS: [...]` in the JSON
      - script complains if `BOARD_MAINTAINER` is not set in core boards. Empty is still allowed.
    - `HAS_VIDEO_OUTPUT="no"` causes `BOARD_HAS_VIDEO: false` in the JSON (for desktop-only inventorying, see below)
- introduce `not-eos-with-video` in `items-from-inventory` at the targets compositor
  - the same as `not-eos`, but with added `BOARD_HAS_VIDEO: true` filter, see above
- introduce `TARGETS_FILTER_INCLUDE` for targets compositor
  - this filters the targets _after_ compositing (but before getting image info), based on the board inventory data
  - it's a comma-separated list of `key:value` pairs, which are OR-ed together
  - new virtual info `BOARD_SLASH_BRANCH` post-compositing inventory for filtering of a specific BOARD/BRANCH combo (e.g. `odroidhc4/edge`)
  - some interesting possible filters:
    - `TARGETS_FILTER_INCLUDE="BOARD:odroidhc4"`: _only_ build a single board, all branches. JIRA [AR-1806]
    - `TARGETS_FILTER_INCLUDE="BOARD_SLASH_BRANCH:odroidhc4/current"`: _only_ build a single board/branch combo
    - `TARGETS_FILTER_INCLUDE="BOARD:odroidhc4,BOARD:odroidn2"`: _only_ build _two_ boards, all branches.
    - `TARGETS_FILTER_INCLUDE="BOARD_MAINTAINERS:rpardini"`: build all boards and branches where rpardini is a maintainer
    - `TARGETS_FILTER_INCLUDE="BOARDFAMILY:rockchip64"`: build all boards and branches in the rockchip64 family
  - image-info-only variables like `LINUXFAMILY` is **not** available for filtering at this stage
- rename `config/templates` `targets-all-cli.yaml` to `targets-default.yaml`
    - this is used when no `userpatches/targets.yaml` is found
    - new default includes all boards vs branches for non-EOS boards
        - also desktop for all boards that _don't_ have `HAS_VIDEO_OUTPUT='no``
- introduce simplified `targets-dashboard` CLI:
  - does only inventory, compositing, and image info, but not artifact reducing, etc.
  - ignore desktop builds in the OpenSearch indexer
  - update the OpenSearch Dashboards, including new information now available
- invert the logic used for `CLEAN_INFO` and `CLEAN_MATRIX`
    - defaults to `yes` now, so new users/CI don't get hit by stale caches by default
    - repo pipeline CLI stuff is usually run on saved/restored artifacts for `output/info`, so don't clean by default via the CLI
2023-07-26 15:15:02 +02:00
Ricardo Pardini
eab306b279 tmpfs: introduce USE_TMPFS=no to disable tmpfs usage for WORKDIR and package-specific working dirs; actually use $temp_dir_id for mktemp; see #5502
- `USE_TMPFS=no` disables usage of generic tmpfs mechanism (still possibly used for rootfs/image building, which is unrelated), for last-resort cases
- use better/more descriptive `temp_dir_id`'s for kernel build than `k` (now `kernel_dest_install_dir`) and `kd` (now `kernel_debs_temp_dir`)
  - specific image/dtb/headers packaging already had decent names, same for other .deb's
- replace `mktemp -d` with `mktemp -d --tmpdir "${temp_dir_id}-XXXXX"` in `prepare_temp_dir_in_workdir_and_schedule_cleanup()`, so we know what's using what in tmpfs
2023-07-24 23:19:15 +02:00
Patrick Yavitz
88a19f5d82 drivers: net: wireless: realtek: rtw88: upstream-wireless
This commit is cosmetic; git format-patch

Signed-off-by: Patrick Yavitz <pyavitz@xxxxx.com>
2023-07-23 17:00:03 +02:00
Gunjan Gupta
bc0e131747 Enforce use of bind mount for /dev within chroot
The /dev/mapper directory created by devtmpfs lacked entry for
armbian-root thereby breaking the cryptsetup configuration generated
within initrd file. Use bind mount as that doesn't seem to suffer from
that issue.
2023-07-22 02:18:49 +05:30
Gunjan Gupta
37d79f1ee2 Fix cache miss detection for initrd
We were not monitoring /usr/share/initramfs-tools before where most
of extra hooks gets installed. While testing builds with CRYPTROOT
I created build with dropbear ssh key unlock support first and then
went for password only, but it still used initrd image with dropbear
files and older keys. Including /usr/share/initramfs-tools fixes the
same. Also as dropbear keys were autogenerated, they needed to be
monitored as well.
2023-07-22 02:18:49 +05:30
Gunjan Gupta
2bf0ddc034 Fix intermitent loop device not available error when CRYPTROOT_ENABLE is enabled 2023-07-22 02:18:49 +05:30
Gunjan Gupta
909fa47b7e Fix caching of cryptroot packages. Also moved the crypt code to extension 2023-07-22 02:18:49 +05:30
Ricardo Pardini
9b70101d07 artifact: kernel: force D0000 drivers hash for artifact_version if EXTRAWIFI=no 2023-07-20 01:03:43 +02:00
Jacob Hrbek
6556a3a77e Add compatibility for non-FHS 3.0 systems
* Added `shell.nix` definition for temporary development environment for Nix(OS)
* Set uuidgen and other binaries check to not rely on hard-codded paths
2023-07-19 23:16:22 +02:00
Gunjan Gupta
2660eaeff0 lib: functions: compilation: Make it possible to toggle EXTRAWIFI
With this change, setting EXTRAWIFI=no will disable all wireless
patches applied within drivers_network.sh script. Also since #5265
the rtl88x2cs patches were suppose to be not applied to 6.1+ kernel
onwards, instead they were disabled entirely. As this was done by
adding EXTRAWIFI=no, its now replaced with kernel version limit.
Keeping EXTRAWIFI=no there would have made those patches to apply
which would have changed the meaning of the flag.
2023-07-20 02:35:17 +05:30
Igor Pecovnik
d56b56edbb Revert "armbian-desktop/aggregation: introduce DESKTOP_COMMON aggregation variant, where arch/config/appgroups are ignored; see #5439"
This reverts commit f952ae89fb.
2023-07-19 01:02:23 +02:00
Ricardo Pardini
a4c703dfb0 partitioning: declare global readonly ROOT_PART_UUID for later hooks
- re-use local `root_part_uuid` instead of running blkid multiple times
2023-07-18 14:21:01 +02:00
Ricardo Pardini
f952ae89fb armbian-desktop/aggregation: introduce DESKTOP_COMMON aggregation variant, where arch/config/appgroups are ignored; see #5439 2023-07-18 14:20:44 +02:00
Alban Browaeys
99ca2142a6 Fixup for stale kickoff removal in wireless regulator API
Cope with the fix in stable 6.3.13 bf353116d1bf and 6.5-rc1 e8c2af660ba0
"wifi: cfg80211: fix regulatory disconnect with OCB/NAN".
That is the removal of REGULATORY_IGNORE_STALE_KICKOFF
from the wireless regulator internal API to fix any driver
that allowed OCB/NAN.

Note this code will need to be expanded once and if 6.4 include the
above fixup.

Signed-off-by: Alban Browaeys <alban.browaeys@gmail.com>
2023-07-18 14:16:50 +02:00
Ricardo Pardini
3970058720 uboot: allow adding/changing uboot CFLAGS with post_config_uboot_target() hook 2023-07-12 00:51:21 +02:00
Ricardo Pardini
3262f6fcab drivers-harness: add branch to drivers base cache key declare cache_key_base="${KERNEL_MAJOR_MINOR}_${LINUXFAMILY}_${BRANCH}"
- this allows for 2 branches with the same version to not interfere with each other
2023-07-12 00:51:01 +02:00
Ricardo Pardini
718047cfd7 interactive: show all possible KERNEL_TARGET's in branch selection UI; handle current/edge/legacy, others are "experimental"
- remove `midstream` special handling
2023-07-12 02:41:02 +05:30
Patrick Yavitz
2b5e341220 rtw88: sdio: honor the host max_req_size in the rx path
Use multiple consecutive reads in rtw_sdio_read_port() to limit the number of bytes which are copied by the host from the card in one MMC/SDIO transfer. This allows receiving a buffer that's larger than the hosts max_req_size (number of bytes which can be transferred in one MMC/SDIO transfer). As a result of this the skb_over_panic error is gone as the rtw88 driver is now able to receive more than 1536 bytes from the card (either because the incoming packet is larger than that or because multiple packets have been aggregated).

Signed-off-by: Patrick Yavitz <pyavitz@xxxxx.com>
2023-07-11 11:15:15 +02:00
Ricardo Pardini
6cd3cbbf6b kernel-debs: headers: hack/fix for 6.5-rc1's "tools/counter: Makefile: Remove lingering 'include' directories on make clean"
- introduced at 228354ed69
  - simply creating the dir solves it
  - reported to author, let's hope for an -rc2 fix.
- better logging when DEBUG=yes (don't pass "-s"(ilent) to make clean)
2023-07-11 11:14:41 +02:00
Gunjan Gupta
95687ba057 Remove plymouth package if its not needed 2023-07-10 08:57:48 +02:00
Gunjan Gupta
60fd20a720 kernel: sunxi: make use of patches from driver harness 2023-07-10 08:56:18 +02:00
Gunjan Gupta
1d89a9f65a Make sure we upgrade armbian-bsp-cli package 2023-07-08 00:05:58 +05:30
Ricardo Pardini
38149f278f debs: remove Installed-Size: 1 from control files; Installed-Size is properly calculated at fakeroot_dpkg_deb_build() for all packages 2023-07-05 21:22:47 +02:00
Ricardo Pardini
c5fe25aa17 partitioning: move hook call image_specific_armbian_env_ready() after the end of related manipulations
- depending on rootpart/extlinux/boot.ini it might not have run or had any effect
2023-07-04 03:09:07 +05:30
Patrick Yavitz
6e6ed0e88e patch: misc: rtw88: decrease the log level of tx report
Reduce 'failed to get tx report from firmware' dmesg spam.
https://lore.kernel.org/linux-wireless/20210713104524.47101-1-pkshih@realtek.com/

Signed-off-by: Patrick Yavitz <pyavitz@gmail.com>
2023-07-01 23:44:02 +02:00
Gunjan Gupta
2cae0b9422 artifacts: fix hashing for u-boot and kernel 2023-07-02 02:44:41 +05:30
Ricardo Pardini
bd56746146 python2/python3: symlink python3 as python/python2 if python2 is not found in host
- this _might_ allow some u-boots to build on bookworm/sid/etc (python2-less build hosts)
2023-07-01 21:49:08 +02:00
Ricardo Pardini
e6f70a3573 docker: default COLUMNS env var to 160 if unset / not-interactive 2023-07-01 14:55:49 +02:00
Lane Jennison
ad97c1b7ee rockchip-rk3588 collabora: new branch (by @lanefu)
- `bsdextrautils` for kernel 6.4 (only if collabora branch)
- kernel 6.4 major, but skip rtw88 driver patching
2023-07-01 14:50:35 +02:00
Ricardo Pardini
079549b7fb u-boot: log what the BOOTCONFIG is when building 2023-07-01 14:50:05 +02:00
Ricardo Pardini
ba71419b58 artifact-uboot: hack: add rkbin blob paths to variables hashed (otherwise changes aren't picked up)
- this definitely needs re-thinking later, each family might have completely different requirements (eg: meson64's FIPs vs rk's rkbins vs ...)
2023-06-28 21:27:09 +02:00
Ricardo Pardini
3324449fbe kernel drivers: introduce KERNEL_DRIVERS_SKIP array to allow families to skip certain kernel drivers
- move rtw88's skip's from drivers_network.sh to their own family definitions
2023-06-28 21:26:54 +02:00
Ricardo Pardini
8b0fb1537b meson-{sm1|g12a|g12b}: default, but don't override, ASOUND_STATE; this way board-specific asound.state's are honored
- add logging during actual deployment so we know what is happening
2023-06-27 11:39:36 +02:00