From 48b5e8eee7e1b86ca06417875627f032d5107ee4 Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Sun, 29 Jul 2012 03:49:52 -0400 Subject: linux/kernel/manual-config: Build in a separate directory and move the build and source trees into $out --- pkgs/os-specific/linux/kernel/manual-config.nix | 31 ++++++++++++++++--------- 1 file changed, 20 insertions(+), 11 deletions(-) (limited to 'pkgs/os-specific') diff --git a/pkgs/os-specific/linux/kernel/manual-config.nix b/pkgs/os-specific/linux/kernel/manual-config.nix index 651f9b14e778..b4dbb786016c 100644 --- a/pkgs/os-specific/linux/kernel/manual-config.nix +++ b/pkgs/os-specific/linux/kernel/manual-config.nix @@ -41,6 +41,9 @@ let features = readFeatures config; + commonMakeFlags = [ + "O=../build" + ]; in stdenv.mkDerivation ({ @@ -54,8 +57,8 @@ stdenv.mkDerivation ({ inherit patches src; - postPatch = '' - for mf in $(find -name Makefile); do + prePatch = '' + for mf in $(find -name Makefile -o -name Makefile.include); do echo "stripping FHS paths in \`$mf'..." sed -i "$mf" -e 's|/usr/bin/||g ; s|/bin/||g' done @@ -63,9 +66,11 @@ stdenv.mkDerivation ({ configurePhase = '' runHook preConfigure - ln -sv ${config} .config - make oldconfig - rm .config.old + mkdir ../build + make $makeFlags "''${makeFlagsArray[@]}" mrproper + ln -sv ${config} ../build/.config + make $makeFlags "''${makeFlagsArray[@]}" oldconfig + rm ../build/.config.old runHook postConfigure ''; @@ -76,14 +81,18 @@ stdenv.mkDerivation ({ installPhase = '' runHook preInstall mkdir $out - mv -v System.map $out + mv -v ../build/System.map $out # !!! Assumes x86 - mv -v arch/x86/boot/bzImage $out - mv -v vmlinux $out + mv -v ../build/arch/x86/boot/bzImage $out + mv -v ../build/vmlinux $out runHook postInstall ''; + + makeFlags = commonMakeFlags; } // optionalAttrs features.modular { - makeFlags = [ "MODLIB=\"$(out)/lib/modules/${modDirVersion}\"" ]; + makeFlags = commonMakeFlags ++ [ + "MODLIB=\"$(out)/lib/modules/${modDirVersion}\"" + ]; INSTALL_MOD_STRIP = "1"; @@ -92,7 +101,7 @@ stdenv.mkDerivation ({ $installFlags "''${installFlagsArray[@]}" rm -f $out/lib/modules/${modDirVersion}/{build,source} cd .. - mv $sourceRoot $out/lib/modules/${modDirVersion}/build - ln -sv $out/lib/modules/${modDirVersion}/{build,source} + mv $sourceRoot $out/lib/modules/${modDirVersion}/source + mv build $out/lib/modules/${modDirVersion}/build ''; }) -- cgit 1.4.1