1
1
mirror of https://github.com/NixOS/mobile-nixos.git synced 2024-12-17 21:11:34 +03:00
mobile-nixos/devices/motorola-addison/kernel/default.nix
Samuel Dionne-Riel 4c11bf2c50 motorola-addison: Reduce size of the kernel
The patches added here are required to build under some conditions, but
not all are ended up needed as CONFIG_DEBUG_FS is required to be active
otherwise the kernel doesn't even boot :/

The kernel size was reduced by:

 * Removing tracing support
 * Removing unneeded exfat and sdcardfs filesystems
 * Removing all sound support
 * Removing video input (camera) support

The latter options seem awfully shortsighted, until you remember that a goal is
to eventually deal with booting our own kernels through kexec.

The Moto Z Play device's boot partition size is putting us in a hard
spot.
2019-12-04 17:39:46 -05:00

77 lines
2.0 KiB
Nix

{
mobile-nixos
, stdenv
, hostPlatform
, fetchFromGitHub
, kernelPatches ? [] # FIXME
, dtbTool
}:
#
# Note:
# This kernel build is special, it supports both armv7l and aarch64.
# This is because motorola ships an armv7l userspace from stock ROM.
#
# in local.nix:
# mobile.system.system = lib.mkForce "armv7l-linux";
#
let
inherit (stdenv.lib) optionalString;
cpuName = hostPlatform.parsed.cpu.name;
in
(mobile-nixos.kernel-builder-gcc6 {
version = "3.18.71";
configfile = ./. + "/config.${cpuName}";
file = if (cpuName == "aarch64") then "Image.gz" else "zImage";
hasDTB = (cpuName == "aarch64");
src = fetchFromGitHub {
owner = "LineageOS";
repo = "android_kernel_motorola_msm8953";
rev = "80530de6e297dd0f0ba479c0dcc4ddb7c9e90e24"; # lineage-15.1
sha256 = "0qw8x61ycpkk5pqvs9k2abr5lq56ga5dml6vkygvmi8psm2g6kg1";
};
patches = [
./04_fix_camera_msm_isp.patch
./05_misc_msm_fixes.patch
./06_prima_gcc6.patch
./99_framebuffer.patch
./0001-Allow-building-WCD9335_CODEC-without-REGMAP_ALLOW_WR.patch
./0005-Allow-building-with-sound-disabled.patch
];
isModular = false;
}).overrideAttrs({ postInstall ? "", postPatch ? "", ... }: {
installTargets = [ "zinstall" "dtbs" ];
postPatch = postPatch + ''
cp -v "${./compiler-gcc6.h}" "./include/linux/compiler-gcc6.h"
# FIXME : factor out
(
# Remove -Werror from all makefiles
local i
local makefiles="$(find . -type f -name Makefile)
$(find . -type f -name Kbuild)"
for i in $makefiles; do
sed -i 's/-Werror-/-W/g' "$i"
sed -i 's/-Werror=/-W/g' "$i"
sed -i 's/-Werror//g' "$i"
done
)
'';
postInstall = postInstall + ''
mkdir -p "$out/dtbs/"
''
+ optionalString (cpuName == "aarch64") ''
${dtbTool}/bin/dtbTool -s 2048 -p "scripts/dtc/" -o "$out/dtbs/motorola-addison.img" "$out/dtbs/qcom/"
''
+ optionalString (cpuName == "armv7l") ''
${dtbTool}/bin/dtbTool -s 2048 -p "scripts/dtc/" -o "$out/dtbs/motorola-addison.img" "arch/arm/boot"
''
;
})