mirror of
https://github.com/nix-community/raspberry-pi-nix.git
synced 2025-12-08 18:11:03 +01:00
add kernel cross build support for faster builds on x86_64-linux
This adds the option `raspberry-pi-nix.kernel-build-system`, which can be used to drastically decrease the build times. Description of the option: The build system to compile the kernel on. Only the linux kernel will be cross compiled, while most of the derivations are still pulled from cache.nixos.org. Use this if you cannot or don't want to use the nix-community cache and either: - you are building on an x86_64 system using binfmt_misc for aarch64-linux. - or if your x86_64 builder has a better CPU than your aarch64 builder.
This commit is contained in:
parent
aaec735faf
commit
03886d127e
3 changed files with 43 additions and 4 deletions
|
|
@ -26,13 +26,13 @@ let
|
|||
boards = [ "bcm2711" "bcm2712" ];
|
||||
|
||||
# Helpers for building the `pkgs.rpi-kernels' map.
|
||||
rpi-kernel = { version, board }:
|
||||
rpi-kernel = { version, board, pkgs ? final }:
|
||||
let
|
||||
kernel = builtins.getAttr version versions;
|
||||
version-slug = builtins.replaceStrings [ "v" "_" ] [ "" "." ] version;
|
||||
in
|
||||
{
|
||||
"${version}"."${board}" = (final.buildLinux {
|
||||
"${version}"."${board}" = (pkgs.buildLinux {
|
||||
modDirVersion = version-slug;
|
||||
version = version-slug;
|
||||
pname = "linux-rpi";
|
||||
|
|
@ -70,9 +70,21 @@ let
|
|||
'';
|
||||
});
|
||||
};
|
||||
|
||||
rpi-kernels = builtins.foldl'
|
||||
(b: a: final.lib.recursiveUpdate b (rpi-kernel a))
|
||||
{ };
|
||||
|
||||
rip-kernels-cross = buildSystem: builtins.foldl'
|
||||
(b: a: final.lib.recursiveUpdate b (rpi-kernel (
|
||||
a // {
|
||||
pkgs = import final.pkgs.path {
|
||||
system = buildSystem;
|
||||
crossSystem = "aarch64-linux";
|
||||
};
|
||||
}
|
||||
)))
|
||||
{ };
|
||||
in
|
||||
{
|
||||
# disable firmware compression so that brcm firmware can be found at
|
||||
|
|
@ -114,11 +126,16 @@ in
|
|||
|
||||
} // {
|
||||
# rpi kernels and firmware are available at
|
||||
# `pkgs.rpi-kernels.<VERSION>.<BOARD>'.
|
||||
# `pkgs.rpi-kernels.<VERSION>.<BOARD>'.
|
||||
#
|
||||
# For example: `pkgs.rpi-kernels.v6_6_54.bcm2712'
|
||||
rpi-kernels = rpi-kernels (
|
||||
final.lib.cartesianProduct
|
||||
{ board = boards; version = (builtins.attrNames versions); }
|
||||
);
|
||||
|
||||
rpi-kernels-cross = buildSystem: rip-kernels-cross buildSystem (
|
||||
final.lib.cartesianProduct
|
||||
{ board = boards; version = (builtins.attrNames versions); }
|
||||
);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue