Build notes - chickendrop89/device_xiaomi_gemstones-kernel GitHub Wiki
- You can either use
CI/CD,kleaf (bazel), orbuild.sh (deprecated)to build this kernel. - https://source.android.com/docs/setup/build/building-kernels#building
- GitHub actions can be used to automatically build the kernel with all of it's configurations
- It can also be used to build other common kernels, provided the same build structure
- chickendrop89/ack-build-workflow
- There is a custom
repomanifest in the readme branch root directory, Download it, and move it into some directory. - If you are planning to build a custom source, follow the steps in #Forking before the last step here
- Expecting the manifest is in the current directory, execute these commands
repo init -u https://android.googlesource.com/kernel/manifest -m $(pwd)/chickernel.xml
repo sync --fetch-submodules💚 Building using kleaf (bazel)
# --config=fast speeds up the build
bazel build //common:<build config>- After building, the artifacts can be found somewhere at
bazel-out
Kleaf accepts these configurations:
chickernelchickernel_ksunchickernel_ksun_susfs
📜 Building using build script
BUILD_CONFIG=common/<build config>
FAST_BUILD=1 # Not required, forces thinLTO
build/config.sh nconfig # Edit build configuration
build/build.sh # Build the kernel- After building, the artifacts can be found at
out/dist/android13-5.15
Build script accepts these configurations:
build.config.gki.aarch64.chickernelbuild.config.gki.aarch64.chickernel.ksunbuild.config.gki.aarch64.chickernel.ksun.susfs
When forking this repo, unselect this option!
[x] Copy the "readme" branch only
Then, later in the cloning step (if following the guide and building manually). Edit these lines in the downloaded chickernel.xml:
<remote name="common-repo" fetch="(YOUR GITHUB USER URL)"/> And if you entered a different repository name, or changed branch name. Edit this line as well:
<project path="common" name="(YOUR FORK NAME)" remote="common-repo" revision="(YOUR FORK BRANCH)" >
<linkfile src="." dest=".source_date_epoch_dir" />
</project>- Example: upstreaming the kernel to latest ACK LTS
git remote add ack https://android.googlesource.com/kernel/common
git fetch ack android13-5.15-lts
git merge ack/android13-5.15-lts
# Then fix merge conflicts if any- Example: change directory to your source, and run:
git submodule update --init --remote- Upstreaming SuSFS implementation in kernel is kinda tricky, because it involves applying patches, and re-doing everything
- Clone the
gki-android13-5.15branch into your working directory outside the kernel, and after you do the 1st step mentioned below, do everything as according the guide in it's README
I do it someway like this:
- First, i revert previous implementation commit
- I merge the directories from
kernel_patches/to my tree - I apply the patch:
git apply *.patch --reject --whitespace=fix
- I am also new to building GKI kernels, feel free to leave any feedback, or open issue if you have any problems. Thanks