nixpkgs/pkgs/misc/uboot/default.nix
Ben Wolsieffer 01020b3263 uboot: sheevplug and guruplug: use mainline U-Boot
These derivations have not seen any updates since they were created in 2010,
and some of their sources have disappeared. There are upstream configs for
these boards, so these are now used, and they build correctly. I have no way
of testing them, and I don't if anyone even uses either board with Nix anymore.
2018-03-18 18:53:12 +02:00

217 lines
6 KiB
Nix

{ stdenv, fetchurl, fetchpatch, bc, dtc, openssl, python2, swig
, hostPlatform, buildPackages
}:
let
buildUBoot = { filesToInstall
, installDir ? "$out"
, defconfig
, extraMakeFlags ? []
, extraMeta ? {}
, ... } @ args:
stdenv.mkDerivation (rec {
name = "uboot-${defconfig}-${version}";
version = "2018.03";
src = fetchurl {
url = "ftp://ftp.denx.de/pub/u-boot/u-boot-${version}.tar.bz2";
sha256 = "1z9x635l5164c5hnf7qs19w7j3qghbkgs7rpn673dm898i9pfx3y";
};
patches = [
(fetchpatch {
url = https://github.com/dezgeg/u-boot/commit/rpi-2017-11-patch1.patch;
sha256 = "067yq55vv1slv4xy346px7h329pi14abdn04chg6s1s6hmf6c1x9";
})
(fetchpatch {
url = https://github.com/dezgeg/u-boot/commit/rpi-2017-11-patch2.patch;
sha256 = "0bbw0q027xvzvdxxvpzjajg4rm30a8mb7z74b6ma9q0l7y7bi0c4";
})
(fetchpatch {
url = https://github.com/dezgeg/u-boot/commit/pythonpath-2018-03.patch;
sha256 = "1rhhlhrwhv7ic1n5i720jfh2cxwrkssrkvinllyjy3j9k9bpzcqd";
})
(fetchpatch {
url = https://github.com/dezgeg/u-boot/commit/extlinux-path-length-2018-03.patch;
sha256 = "07jafdnxvqv8lz256qy29agjc2k1zj5ad4k28r1w5qkhwj4ixmf8";
})
];
postPatch = ''
patchShebangs tools
'';
nativeBuildInputs = [ bc dtc openssl python2 swig ];
depsBuildBuild = [ buildPackages.stdenv.cc ];
hardeningDisable = [ "all" ];
makeFlags = [
"DTC=dtc"
"CROSS_COMPILE=${stdenv.cc.targetPrefix}"
] ++ extraMakeFlags;
configurePhase = ''
runHook preConfigure
make ${defconfig}
runHook postConfigure
'';
installPhase = ''
runHook preInstall
mkdir -p ${installDir}
cp ${stdenv.lib.concatStringsSep " " filesToInstall} ${installDir}
runHook postInstall
'';
enableParallelBuilding = true;
dontStrip = true;
meta = with stdenv.lib; {
homepage = http://www.denx.de/wiki/U-Boot/;
description = "Boot loader for embedded systems";
license = licenses.gpl2;
maintainers = [ maintainers.dezgeg ];
} // extraMeta;
} // removeAttrs args [ "extraMeta" ]);
in rec {
inherit buildUBoot;
ubootTools = buildUBoot rec {
defconfig = "allnoconfig";
installDir = "$out/bin";
buildFlags = "tools NO_SDL=1";
hardeningDisable = [];
dontStrip = false;
extraMeta.platforms = stdenv.lib.platforms.linux;
# build tools/kwboot
extraMakeFlags = [ "CONFIG_KIRKWOOD=y" ];
postConfigure = ''
sed -i '/CONFIG_SYS_TEXT_BASE/c\CONFIG_SYS_TEXT_BASE=0x00000000' .config
'';
filesToInstall = [
"tools/dumpimage"
"tools/fdtgrep"
"tools/kwboot"
"tools/mkenvimage"
"tools/mkimage"
];
};
ubootA20OlinuxinoLime = buildUBoot rec {
defconfig = "A20-OLinuXino-Lime_defconfig";
extraMeta.platforms = ["armv7l-linux"];
filesToInstall = ["u-boot-sunxi-with-spl.bin"];
};
ubootBananaPi = buildUBoot rec {
defconfig = "Bananapi_defconfig";
extraMeta.platforms = ["armv7l-linux"];
filesToInstall = ["u-boot-sunxi-with-spl.bin"];
};
ubootBeagleboneBlack = buildUBoot rec {
defconfig = "am335x_boneblack_defconfig";
extraMeta.platforms = ["armv7l-linux"];
filesToInstall = ["MLO" "u-boot.img"];
};
# http://git.denx.de/?p=u-boot.git;a=blob;f=board/solidrun/clearfog/README;hb=refs/heads/master
ubootClearfog = buildUBoot rec {
defconfig = "clearfog_defconfig";
extraMeta.platforms = ["armv7l-linux"];
filesToInstall = ["u-boot-spl.kwb"];
};
ubootGuruplug = buildUBoot rec {
defconfig = "guruplug_defconfig";
extraMeta.platforms = ["armv5tel-linux"];
filesToInstall = ["u-boot.bin"];
};
ubootJetsonTK1 = buildUBoot rec {
defconfig = "jetson-tk1_defconfig";
extraMeta.platforms = ["armv7l-linux"];
filesToInstall = ["u-boot" "u-boot.dtb" "u-boot-dtb-tegra.bin" "u-boot-nodtb-tegra.bin"];
};
ubootOdroidXU3 = buildUBoot rec {
defconfig = "odroid-xu3_defconfig";
extraMeta.platforms = ["armv7l-linux"];
filesToInstall = ["u-boot-dtb.bin"];
};
ubootOrangePiPc = buildUBoot rec {
defconfig = "orangepi_pc_defconfig";
extraMeta.platforms = ["armv7l-linux"];
filesToInstall = ["u-boot-sunxi-with-spl.bin"];
};
ubootPcduino3Nano = buildUBoot rec {
defconfig = "Linksprite_pcDuino3_Nano_defconfig";
extraMeta.platforms = ["armv7l-linux"];
filesToInstall = ["u-boot-sunxi-with-spl.bin"];
};
ubootQemuArm = buildUBoot rec {
defconfig = "qemu_arm_defconfig";
extraMeta.platforms = ["armv7l-linux"];
filesToInstall = ["u-boot.bin"];
};
ubootRaspberryPi = buildUBoot rec {
defconfig = "rpi_defconfig";
extraMeta.platforms = ["armv6l-linux"];
filesToInstall = ["u-boot.bin"];
};
ubootRaspberryPi2 = buildUBoot rec {
defconfig = "rpi_2_defconfig";
extraMeta.platforms = ["armv7l-linux"];
filesToInstall = ["u-boot.bin"];
};
ubootRaspberryPi3_32bit = buildUBoot rec {
defconfig = "rpi_3_32b_defconfig";
extraMeta.platforms = ["armv7l-linux"];
filesToInstall = ["u-boot.bin"];
};
ubootRaspberryPi3_64bit = buildUBoot rec {
defconfig = "rpi_3_defconfig";
extraMeta.platforms = ["aarch64-linux"];
filesToInstall = ["u-boot.bin"];
};
ubootSheevaplug = buildUBoot rec {
defconfig = "sheevaplug_defconfig";
extraMeta.platforms = ["armv5tel-linux"];
filesToInstall = ["u-boot.bin"];
};
ubootUtilite = buildUBoot rec {
defconfig = "cm_fx6_defconfig";
extraMeta.platforms = ["armv7l-linux"];
filesToInstall = ["u-boot-with-nand-spl.imx"];
buildFlags = "u-boot-with-nand-spl.imx";
postConfigure = ''
cat >> .config << EOF
CONFIG_CMD_SETEXPR=y
EOF
'';
# sata init; load sata 0 $loadaddr u-boot-with-nand-spl.imx
# sf probe; sf update $loadaddr 0 80000
};
ubootWandboard = buildUBoot rec {
defconfig = "wandboard_defconfig";
extraMeta.platforms = ["armv7l-linux"];
filesToInstall = ["u-boot.img" "SPL"];
};
}