summary refs log tree commit diff
path: root/pkgs/os-specific/linux/kernel/linux-rpi.nix
diff options
context:
space:
mode:
authorTuomas Tynkkynen <tuomas.tynkkynen@iki.fi>2018-09-20 16:41:04 +0300
committerTuomas Tynkkynen <tuomas.tynkkynen@iki.fi>2018-09-24 14:16:46 +0300
commitf9197b9f63da8b6d9244c5a8e99507fdd294dcc5 (patch)
tree86cb97d477c4488b67a944bf13a7cc6f9777144b /pkgs/os-specific/linux/kernel/linux-rpi.nix
parentc841c3e2c6117549c320faba8ac45e1ca1df4602 (diff)
downloadnixpkgs-f9197b9f63da8b6d9244c5a8e99507fdd294dcc5.tar
nixpkgs-f9197b9f63da8b6d9244c5a8e99507fdd294dcc5.tar.gz
nixpkgs-f9197b9f63da8b6d9244c5a8e99507fdd294dcc5.tar.bz2
nixpkgs-f9197b9f63da8b6d9244c5a8e99507fdd294dcc5.tar.lz
nixpkgs-f9197b9f63da8b6d9244c5a8e99507fdd294dcc5.tar.xz
nixpkgs-f9197b9f63da8b6d9244c5a8e99507fdd294dcc5.tar.zst
nixpkgs-f9197b9f63da8b6d9244c5a8e99507fdd294dcc5.zip
linux_rpi: Extend the logic for not installing unnecessary DTBs
Now ARMv6 and ARMv7 builds avoid installing DTBs for boards where the
resulting kernel won't run just like the aarch64 builds already do.
Also deduplicates the logic a bit.
Diffstat (limited to 'pkgs/os-specific/linux/kernel/linux-rpi.nix')
-rw-r--r--pkgs/os-specific/linux/kernel/linux-rpi.nix23
1 files changed, 9 insertions, 14 deletions
diff --git a/pkgs/os-specific/linux/kernel/linux-rpi.nix b/pkgs/os-specific/linux/kernel/linux-rpi.nix
index 26fb595ad59..d95c2caa2cf 100644
--- a/pkgs/os-specific/linux/kernel/linux-rpi.nix
+++ b/pkgs/os-specific/linux/kernel/linux-rpi.nix
@@ -1,10 +1,10 @@
-{ stdenv, buildPackages, fetchFromGitHub, perl, buildLinux, ... } @ args:
+{ stdenv, lib, buildPackages, fetchFromGitHub, perl, buildLinux, ... } @ args:
 
 let
   modDirVersion = "4.14.62";
   tag = "1.20180817";
 in
-stdenv.lib.overrideDerivation (buildLinux (args // rec {
+lib.overrideDerivation (buildLinux (args // rec {
   version = "${modDirVersion}-${tag}";
   inherit modDirVersion;
 
@@ -34,20 +34,13 @@ stdenv.lib.overrideDerivation (buildLinux (args // rec {
 
   # Make copies of the DTBs named after the upstream names so that U-Boot finds them.
   # This is ugly as heck, but I don't know a better solution so far.
-  postFixup = if stdenv.hostPlatform.system == "aarch64-linux" then ''
-    rm $out/dtbs/broadcom/bcm283*.dtb
+  postFixup = ''
+    dtbDir=${if stdenv.isAarch64 then "$out/dtbs/broadcom" else "$out/dtbs"}
+    rm $dtbDir/bcm283*.dtb
     copyDTB() {
-      cp -v "$out/dtbs/broadcom/$1" "$out/dtbs/broadcom/$2"
+      cp -v "$dtbDir/$1" "$dtbDir/$2"
     }
-
-    copyDTB bcm2710-rpi-3-b.dtb bcm2837-rpi-3-b.dtb
-    copyDTB bcm2710-rpi-3-b-plus.dtb bcm2837-rpi-3-b-plus.dtb
-  '' else ''
-    rm $out/dtbs/bcm283*.dtb
-    copyDTB() {
-      cp -v "$out/dtbs/$1" "$out/dtbs/$2"
-    }
-
+  '' + lib.optionalString (lib.elem stdenv.hostPlatform.system ["armv6l-linux"]) ''
     copyDTB bcm2708-rpi-0-w.dtb bcm2835-rpi-zero.dtb
     copyDTB bcm2708-rpi-0-w.dtb bcm2835-rpi-zero-w.dtb
     copyDTB bcm2708-rpi-b.dtb bcm2835-rpi-a.dtb
@@ -57,7 +50,9 @@ stdenv.lib.overrideDerivation (buildLinux (args // rec {
     copyDTB bcm2708-rpi-b-plus.dtb bcm2835-rpi-b-plus.dtb
     copyDTB bcm2708-rpi-b-plus.dtb bcm2835-rpi-zero.dtb
     copyDTB bcm2708-rpi-cm.dtb bcm2835-rpi-cm.dtb
+  '' + lib.optionalString (lib.elem stdenv.hostPlatform.system ["armv7l-linux"]) ''
     copyDTB bcm2709-rpi-2-b.dtb bcm2836-rpi-2-b.dtb
+  '' + lib.optionalString (lib.elem stdenv.hostPlatform.system ["armv7l-linux" "aarch64-linux"]) ''
     copyDTB bcm2710-rpi-3-b.dtb bcm2837-rpi-3-b.dtb
     copyDTB bcm2710-rpi-3-b-plus.dtb bcm2837-rpi-3-b-plus.dtb
     copyDTB bcm2710-rpi-cm3.dtb bcm2837-rpi-cm3.dtb