diff --git a/docs/Developer-Guide_Welcome.md b/docs/Developer-Guide_Welcome.md index 11085cc7..efd75550 100644 --- a/docs/Developer-Guide_Welcome.md +++ b/docs/Developer-Guide_Welcome.md @@ -4,31 +4,31 @@ Overview: ### (ANSI) Logging -Logs are output to `output/logs`, in a few different formats. We output ANSI color both to the screen and to the logs. -_Please_ add `SHARE_LOG=yes` to share your logs with our pastebin service when reporting issues, that allows us to check the logs on a web -browser and keep to correct formatting. +Log output is stored in `output/logs` and provided in a few different formats. ANSI coloring is applied to both the screen and the log files themselves. +_Please_ add `SHARE_LOG=yes` to automatically upload logs to our paste service and provide us with the given url when reporting issues. +That will allows us to check the logs on a web browser and keep to correct formatting. ## Command line syntax has changed General CLI syntax: `./compile.sh PARAM=value OTHER_PARAM=other_value [ ...] []` -- where `command` defaults to `build` if you don't specify it; could also be `kernel-config` or `u-boot` etc -- you _can't_ have a config file with the same name as a possible `` (system will check & bomb if so) -- also: there's no more `default` config -- you have to be explicit -- also: there's no more `docker` config -- Docker is fully auto-managed now. The system will complain if you have one. -- you can specify `PARAM=value`, `` or `` in _any order_ +- where `command` defaults to `build` if not specified; could also be `kernel-config` or `u-boot` etc... +- config file names _must not_ have the same name as a possible `` (system will check & bomb if so) +- also: there is no more `default` config -- you have to be explicit +- also: there is no more `docker` config -- Docker is fully auto-managed now. The system will complain if you have one. +- parameters like `PARAM=value`, `` or `` can be applied in _any order_. -## No more `config-default.conf`, you need to specify the config file in the command line +## No more `config-default.conf`, config file name needs to be specified in the command line - No "default" config is auto-loaded anymore. Default config lead to unreproducible failing builds and was a source of confusion. -- The configs still go to the same place, `userpatches/config-xyz.conf` -- but now you gotta tell the build system to - use that config, like `./compile.sh BOARD=xxx xyz`; otherwise works the same. +- The configs still go to the same place, `userpatches/config-xyz.conf` -- but the name has to be provided to the build system to, + like `./compile.sh BOARD=xxx xyz`; otherwise works the same. ## Artifacts, cache, what the ...? The `armbian/build` system is currently undergoing refactoring to improve its structure. Previously, the build system -was a single, complex Bash script that mixed the building of `.deb` packages with the creation of images. +was a single, very complex bash script that mixed the building of `.deb` packages with the creation of images. This was reworked into a `1-to-N` image-to-artifact dependency tree; a certain image build will depend on N possible "artifacts". Artifacts are either `.deb` packages, a `.tar` of multiple `.deb` packages, or a `rootfs.tar.zstd`. Each @@ -36,15 +36,13 @@ artifact can be individually built, and has a specific name and a _version_. Each artifact is also now **cached by default** using OCI storage at ghcr.io (GitHub Container Registry). To achieve _consistent caching_, each artifact produces a version that includes _hashes_ of its composing files, variables, -patches, -hooks, external git SHA1 references, etc. That way we can consistently check the remote OCI cache for previously-built +patches, hooks, external git SHA1 references, etc. That way we can consistently check the remote OCI cache for previously-built artifacts, and possibly save image builders from having to build heavy packages just to produce an image. -### TL-DR about artifacts and caching: +### TL;DR about artifacts and caching: -- `KERNEL_ONLY=yes` and `KERNEL_ONLY=no` are no more. Use the `kernel` CLI command instead. -- `ARTIFACT_IGNORE_CACHE=yes` can help if you're getting false positives. Please also report the problem, with a - complete logfile. +- `KERNEL_ONLY=yes` and `KERNEL_ONLY=no` are deprecated. Use the `kernel` CLI command instead. +- `ARTIFACT_IGNORE_CACHE=yes` can help with false positives. Please also report the problem, with a complete logfile. ## Automatic Docker/sudo launcher @@ -53,11 +51,11 @@ artifacts, and possibly save image builders from having to build heavy packages M1/M2. - You **don't need and actually can't have the old docker config file**. - If Docker is not installed, it will try to use `sudo` to run the build as root. -- If you run directly as root, it will warn you and ask you to run it without sudo. +- If you run directly as root, it will give a warning and asks to run without `sudo`. ## Kernel Git Trees: shallow vs full -During the build, depending on which local or remote caches are hit, it might be needed to build the Linux Kernel. +During the build, depending on which local or remote caches are hit, it might be necessary to build the Linux Kernel from scratch. The kernel's git repo is huge. Most build systems resort to fetching "shallow" trees directly from upstream git servers, to save bandwidth. Unfortunately that creates immense extra CPU load on the git servers. To avoid this problem, @@ -75,9 +73,9 @@ There are two types of cached Kernel git trees: - `shallow` is a much smaller download and requires less disk space - `shallow` is appropriate for restricted devices like SBCs which will build a single kernel -**TL,DR: ** `KERNEL_GIT=full` or `KERNEL_GIT=shallow` or let the system decide for you. +**TL;DR: ** `KERNEL_GIT=full` or `KERNEL_GIT=shallow` or let the system decide for you. -## Consider Forking before cloning the repo +## Consider forking before cloning the repo Before cloning the repo, consider forking it first. This will allow you to make changes and submit pull requests. You will need a GitHub account to do this; @@ -89,14 +87,14 @@ If you fork, make sure to keep your fork up-to-date with the main repo, by rebas This is (by far) not a complete list: -- wifi/other kernel drivers are still using pre-armbian-next code, and are very hard to work with. it's not only the +- wifi/other kernel drivers are still using pre-armbian-next code, and are very hard to work with. it is not only the contents are a mess, the way the whole thing works leads to more and more compounding work. To make it worse, family - patches sometimes need to patch driver code, leading to a cycle of sadness for developers. We're still coming up with + patches sometimes need to patch driver code, leading to a cycle of sadness for developers. We are still coming up with a plan to completely replace this lest most of us go insane. - although "aggregation" has been rewritten in Python, it still mostly works using the legacy principle, by scanning directories and files in a very complex and error-prone way. This is a source of many bugs and confusion. We plan to replace this with pure extensions eventually. -- we've mostly working Kernel headers (linux-headers pkg) for 5.10+ including some vendor kernels +- we have mostly working kernel headers (linux-headers pkg) for 5.10+ including some vendor kernels ## Multiple u-boot's for same board