summary refs log tree commit diff
path: root/pkgs/os-specific/linux/kernel/manual-config.nix
diff options
context:
space:
mode:
authorShea Levy <shea@shealevy.com>2012-07-29 03:49:52 -0400
committerShea Levy <shea@shealevy.com>2012-07-29 03:49:52 -0400
commit48b5e8eee7e1b86ca06417875627f032d5107ee4 (patch)
treefac619d8fbaceb1dc244b0bcb1d4a3ed615a8f60 /pkgs/os-specific/linux/kernel/manual-config.nix
parente42a6c5f464b7f77a60ffbbcf0cdaed739d553eb (diff)
downloadnixpkgs-48b5e8eee7e1b86ca06417875627f032d5107ee4.tar
nixpkgs-48b5e8eee7e1b86ca06417875627f032d5107ee4.tar.gz
nixpkgs-48b5e8eee7e1b86ca06417875627f032d5107ee4.tar.bz2
nixpkgs-48b5e8eee7e1b86ca06417875627f032d5107ee4.tar.lz
nixpkgs-48b5e8eee7e1b86ca06417875627f032d5107ee4.tar.xz
nixpkgs-48b5e8eee7e1b86ca06417875627f032d5107ee4.tar.zst
nixpkgs-48b5e8eee7e1b86ca06417875627f032d5107ee4.zip
linux/kernel/manual-config: Build in a separate directory and move the build and source trees into $out
Diffstat (limited to 'pkgs/os-specific/linux/kernel/manual-config.nix')
-rw-r--r--pkgs/os-specific/linux/kernel/manual-config.nix31
1 files changed, 20 insertions, 11 deletions
diff --git a/pkgs/os-specific/linux/kernel/manual-config.nix b/pkgs/os-specific/linux/kernel/manual-config.nix
index 651f9b14e77..b4dbb786016 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
   '';
 })