From eb047010f8ae35f60b3415df7091dad9b6a92d34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Mon, 1 Mar 2010 23:22:48 +0000 Subject: [PATCH] Trying to get a better expression for uboot upstream, allowing normal and cross build with proper assertions. svn path=/nixpkgs/trunk/; revision=20319 --- pkgs/misc/uboot/default.nix | 64 ++++++++++++++++++++------------- pkgs/top-level/all-packages.nix | 2 +- 2 files changed, 40 insertions(+), 26 deletions(-) diff --git a/pkgs/misc/uboot/default.nix b/pkgs/misc/uboot/default.nix index 7730921cbfe..ffd40673b2f 100644 --- a/pkgs/misc/uboot/default.nix +++ b/pkgs/misc/uboot/default.nix @@ -1,9 +1,23 @@ -{stdenv, fetchurl, unzip, platform}: +{stdenv, fetchurl, unzip}: -# This does not cover the case for cross-building, but we need some filtering -# for the normal stdenv, in order to build the nixpkgs tarball -assert (stdenv.system != "i686-linux" && stdenv.system != "x86_64-linux") - || (stdenv ? cross); +let + platform = stdenv.platform; + configureFun = ubootConfig : + '' + make mrproper + make ${ubootConfig} NBOOT=1 LE=1 + ''; + + buildFun = kernelArch : + '' + unset src + if test -z "$crossConfig"; then + make clean all + else + make clean all ARCH=${kernelArch} CROSS_COMPILE=$crossConfig- + fi + ''; +in stdenv.mkDerivation { name = "uboot-2009.11"; @@ -13,26 +27,6 @@ stdenv.mkDerivation { sha256 = "1rld7q3ww89si84g80hqskd1z995lni5r5xc4d4322n99wqiarh6"; }; - # patches = [ ./gas220.patch ]; - - # Remove the cross compiler prefix, and add reiserfs support - configurePhase = assert (platform ? ubootConfig); - '' - make mrproper - make ${platform.ubootConfig} NBOOT=1 LE=1 - sed -i /CROSS_COMPILE/d include/config.mk - ''; - - buildPhase = assert (platform ? kernelArch); - '' - unset src - if test -z "$crossConfig"; then - make clean all - else - make clean all ARCH=${platform.kernelArch} CROSS_COMPILE=$crossConfig- - fi - ''; - buildNativeInputs = [ unzip ]; dontStrip = true; @@ -46,4 +40,24 @@ stdenv.mkDerivation { ensureDir $out/bin cp tools/{envcrc,mkimage} $out/bin ''; + + configurePhase = + assert platform ? uboot && platform.uboot != null; + assert (platform ? ubootConfig); + configureFun platform.ubootConfig; + + buildPhase = assert (platform ? kernelArch); + buildFun platform.kernelArch; + + crossAttrs = let + cp = stdenv.cross.platform; + in + assert cp ? uboot && cp.uboot != null; + { + configurePhase = assert (cp ? ubootConfig); + configureFun cp.ubootConfig; + + buildPhase = assert (cp ? kernelArch); + buildFun cp.kernelArch; + }; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index f42abb88664..99c7bc32e71 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -6344,7 +6344,7 @@ let else throw "Unknown uboot"; ubootUpstream = makeOverridable (import ../misc/uboot) { - inherit fetchurl stdenv unzip platform; + inherit fetchurl stdenv unzip; }; ubootSheevaplug = makeOverridable (import ../misc/uboot/sheevaplug.nix) {