about summary refs log tree commit diff
path: root/pkgs/build-support/kernel
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2009-09-01 21:56:46 +0000
committerEelco Dolstra <eelco.dolstra@logicblox.com>2009-09-01 21:56:46 +0000
commit58e61617682239f5d20320066b1a79de127bcc61 (patch)
tree9d823bb53fe62c826937eee30731bec01dda3a8a /pkgs/build-support/kernel
parent043fe38f80db59dbc0d6283575892ea06a4b55c5 (diff)
downloadnixlib-58e61617682239f5d20320066b1a79de127bcc61.tar
nixlib-58e61617682239f5d20320066b1a79de127bcc61.tar.gz
nixlib-58e61617682239f5d20320066b1a79de127bcc61.tar.bz2
nixlib-58e61617682239f5d20320066b1a79de127bcc61.tar.lz
nixlib-58e61617682239f5d20320066b1a79de127bcc61.tar.xz
nixlib-58e61617682239f5d20320066b1a79de127bcc61.tar.zst
nixlib-58e61617682239f5d20320066b1a79de127bcc61.zip
* addCoverageInstrumentation: factor out the code that keeps the build
  tree under $out into a separate stdenv adapter named keepBuildTree.
* makeModulesClosure: support building an initrd for a kernel that has
  been compiled with coverage instrumentation.

svn path=/nixpkgs/trunk/; revision=16916
Diffstat (limited to 'pkgs/build-support/kernel')
-rw-r--r--pkgs/build-support/kernel/modules-closure.nix4
-rw-r--r--pkgs/build-support/kernel/modules-closure.sh5
2 files changed, 8 insertions, 1 deletions
diff --git a/pkgs/build-support/kernel/modules-closure.nix b/pkgs/build-support/kernel/modules-closure.nix
index 7eac04819790..cc197edbef19 100644
--- a/pkgs/build-support/kernel/modules-closure.nix
+++ b/pkgs/build-support/kernel/modules-closure.nix
@@ -3,11 +3,13 @@
 # the modules identified by `rootModules', plus their dependencies.
 # Also generate an appropriate modules.dep.
 
-{stdenv, kernel, rootModules, module_init_tools, allowMissing ? false}:
+{ stdenv, kernel, nukeReferences, rootModules
+, module_init_tools, allowMissing ? false }:
 
 stdenv.mkDerivation {
   name = kernel.name + "-shrunk";
   builder = ./modules-closure.sh;
+  buildInputs = [nukeReferences];
   inherit kernel rootModules module_init_tools allowMissing;
   allowedReferences = ["out"];
 }
diff --git a/pkgs/build-support/kernel/modules-closure.sh b/pkgs/build-support/kernel/modules-closure.sh
index 035893ebd69f..e75ef927baae 100644
--- a/pkgs/build-support/kernel/modules-closure.sh
+++ b/pkgs/build-support/kernel/modules-closure.sh
@@ -29,6 +29,11 @@ for module in $closure; do
     mkdir -p $(dirname $target)
     echo $module
     cp $module $target
+    # If the kernel is compiled with coverage instrumentation, it
+    # contains the paths of the *.gcda coverage data output files
+    # (which it doesn't actually use...).  Get rid of them to prevent
+    # the whole kernel from being included in the initrd.
+    nuke-refs $target
     echo $target >> $out/insmod-list
 done