summary refs log tree commit diff
path: root/pkgs/os-specific/linux
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/os-specific/linux')
-rw-r--r--pkgs/os-specific/linux/kernel/builder.sh8
-rw-r--r--pkgs/os-specific/linux/kernel/linux-3.0.nix4
-rw-r--r--pkgs/os-specific/linux/kernel/linux-3.1.nix4
-rw-r--r--pkgs/os-specific/linux/kernel/linux-3.2.nix4
-rw-r--r--pkgs/os-specific/linux/kernel/linux-3.3.nix4
-rw-r--r--pkgs/os-specific/linux/kmod/aggregator.nix (renamed from pkgs/os-specific/linux/module-init-tools/aggregator.nix)5
-rw-r--r--pkgs/os-specific/linux/kmod/default.nix10
-rw-r--r--pkgs/os-specific/linux/module-init-tools/default.nix34
-rw-r--r--pkgs/os-specific/linux/module-init-tools/docbook2man.patch12
-rw-r--r--pkgs/os-specific/linux/module-init-tools/module-dir.patch161
10 files changed, 13 insertions, 233 deletions
diff --git a/pkgs/os-specific/linux/kernel/builder.sh b/pkgs/os-specific/linux/kernel/builder.sh
index 5d6d48d2fc3d..3baba17ef803 100644
--- a/pkgs/os-specific/linux/kernel/builder.sh
+++ b/pkgs/os-specific/linux/kernel/builder.sh
@@ -70,14 +70,8 @@ installPhase() {
     cp vmlinux $out
 
     if grep -q "CONFIG_MODULES=y" .config; then
-        # Install the modules in $out/lib/modules with matching paths
-        # in modules.dep (i.e., refererring to $out/lib/modules, not
-        # /lib/modules).  The depmod_opts= is to prevent the kernel
-        # from passing `-b PATH' to depmod.
-        export MODULE_DIR=$out/lib/modules/
-        substituteInPlace Makefile --replace '-b $(INSTALL_MOD_PATH)' ''
         make modules_install \
-            DEPMOD=$module_init_tools/sbin/depmod depmod_opts= \
+            DEPMOD=$module_init_tools/sbin/depmod \
             $makeFlags "${makeFlagsArray[@]}" \
             $installFlags "${installFlagsArray[@]}"
 
diff --git a/pkgs/os-specific/linux/kernel/linux-3.0.nix b/pkgs/os-specific/linux/kernel/linux-3.0.nix
index 6624718501c9..2ec8ac89f49e 100644
--- a/pkgs/os-specific/linux/kernel/linux-3.0.nix
+++ b/pkgs/os-specific/linux/kernel/linux-3.0.nix
@@ -229,10 +229,6 @@ import ./generic.nix (
   rec {
     version = "3.0.24";
   
-    preConfigure = ''
-      substituteInPlace scripts/depmod.sh --replace '-b "$INSTALL_MOD_PATH"' ""
-    '';
-
     src = fetchurl {
       url = "mirror://kernel/linux/kernel/v3.x/linux-${version}.tar.bz2";
       sha256 = "0j783ivlgg66jvasxaapimyzaqyn61jlz4abhkynckr4h5hrpvw4";
diff --git a/pkgs/os-specific/linux/kernel/linux-3.1.nix b/pkgs/os-specific/linux/kernel/linux-3.1.nix
index 9321bbdd479b..0f5567ae337a 100644
--- a/pkgs/os-specific/linux/kernel/linux-3.1.nix
+++ b/pkgs/os-specific/linux/kernel/linux-3.1.nix
@@ -229,10 +229,6 @@ import ./generic.nix (
   rec {
     version = "3.1.10";
 
-    preConfigure = ''
-      substituteInPlace scripts/depmod.sh --replace '-b "$INSTALL_MOD_PATH"' ""
-    '';
-  
     src = fetchurl {
       url = "mirror://kernel/linux/kernel/v3.x/linux-${version}.tar.bz2";
       sha256 = "1vcpbh7wnc9smw2l5ci27a5p0rgmc1a5dc6a1aljm6f6wcfic8lz";
diff --git a/pkgs/os-specific/linux/kernel/linux-3.2.nix b/pkgs/os-specific/linux/kernel/linux-3.2.nix
index c5d7dedb1118..d8be05627941 100644
--- a/pkgs/os-specific/linux/kernel/linux-3.2.nix
+++ b/pkgs/os-specific/linux/kernel/linux-3.2.nix
@@ -231,10 +231,6 @@ import ./generic.nix (
 
     modDirVersion = version;
 
-    preConfigure = ''
-      substituteInPlace scripts/depmod.sh --replace '-b "$INSTALL_MOD_PATH"' ""
-    '';
-
     src = fetchurl {
       url = "mirror://kernel/linux/kernel/v3.0/${if testing then "testing/" else ""}linux-${version}.tar.bz2";
       sha256 = "1hacfmf08ydzf4xlg6wkkckl5icj7w9h3nh17myz1s67bp7q61qs";
diff --git a/pkgs/os-specific/linux/kernel/linux-3.3.nix b/pkgs/os-specific/linux/kernel/linux-3.3.nix
index ecdcfc86a88a..b663f49aa128 100644
--- a/pkgs/os-specific/linux/kernel/linux-3.3.nix
+++ b/pkgs/os-specific/linux/kernel/linux-3.3.nix
@@ -231,10 +231,6 @@ import ./generic.nix (
 
     modDirVersion = "3.3.0";
 
-    preConfigure = ''
-      substituteInPlace scripts/depmod.sh --replace '-b "$INSTALL_MOD_PATH"' ""
-    '';
-
     src = fetchurl {
       url = "mirror://kernel/linux/kernel/v3.0/${if testing then "testing/" else ""}linux-${version}.tar.bz2";
       sha256 = "0czk8bj46r3r95iz6gi7xkavhjx847s5p9248vabi0c1wjs6kmlg";
diff --git a/pkgs/os-specific/linux/module-init-tools/aggregator.nix b/pkgs/os-specific/linux/kmod/aggregator.nix
index cc4e6ab35521..1fb95edd006e 100644
--- a/pkgs/os-specific/linux/module-init-tools/aggregator.nix
+++ b/pkgs/os-specific/linux/kmod/aggregator.nix
@@ -1,4 +1,4 @@
-{stdenv, module_init_tools, modules, buildEnv}:
+{stdenv, kmod, modules, buildEnv}:
 
 buildEnv {
   name = "kernel-modules";
@@ -21,7 +21,8 @@ buildEnv {
       # kernel version number, otherwise depmod will use `uname -r'.
       if test -w $out/lib/modules/$kernelVersion; then
           rm -f $out/lib/modules/$kernelVersion/modules.*
-          MODULE_DIR=$out/lib/modules/ ${module_init_tools}/sbin/depmod -a $kernelVersion
+          echo ${kmod}/sbin/depmod -b $out -a $kernelVersion
+          ${kmod}/sbin/depmod -b $out -a $kernelVersion
       fi
     '';
 }
diff --git a/pkgs/os-specific/linux/kmod/default.nix b/pkgs/os-specific/linux/kmod/default.nix
index c75b8bec1466..75654226616e 100644
--- a/pkgs/os-specific/linux/kmod/default.nix
+++ b/pkgs/os-specific/linux/kmod/default.nix
@@ -8,10 +8,18 @@ stdenv.mkDerivation {
     sha256 = "1xvsy2zcfdimj4j5b5yyxaqx2byabmwq8qlzjm0hqzpyxxgfw1lq";
   };
 
-  buildInputs = [ pkgconfig xz zlib ];
+  buildInputs = [ xz zlib ];
+  buildNativeInputs = [ pkgconfig ];
 
   configureFlags = [ "--with-xz" "--with-zlib" ];
 
+  postInstall = ''
+    mkdir -p $out/sbin
+    for i in depmod insmod lsmod modinfo modprobe rmmod; do
+      ln -sv ../bin/kmod $out/sbin/$i
+    done
+    '';
+
   meta = {
     homepage = http://www.kernel.org/pub/linux/utils/kernel/kmod/;
     description = "Tools for loading and managing Linux kernel modules";
diff --git a/pkgs/os-specific/linux/module-init-tools/default.nix b/pkgs/os-specific/linux/module-init-tools/default.nix
deleted file mode 100644
index 077d08f899da..000000000000
--- a/pkgs/os-specific/linux/module-init-tools/default.nix
+++ /dev/null
@@ -1,34 +0,0 @@
-{ stdenv, fetchurl, docbook2x, docbook_sgml_dtd_41 }:
-
-stdenv.mkDerivation {
-  name = "module-init-tools-3.16";
-
-  src = [
-    (fetchurl {
-      url = mirror://kernel/linux/utils/kernel/module-init-tools/module-init-tools-3.16.tar.bz2;
-      sha256 = "0jxnz9ahfic79rp93l5wxcbgh4pkv85mwnjlbv1gz3jawv5cvwp1";
-    })
-
-    # Upstream forgot to include the generated manpages.  Thankfully
-    # the Gentoo people fixed this for us :-)
-    (fetchurl {
-      url = mirror://gentoo/distfiles/module-init-tools-3.16-man.tar.bz2;
-      sha256 = "1j1nzi87kgsh4scl645fhwhjvljxj83cmdasa4n4p5krhasgw358";
-    })
-  ];
-
-  SGML_CATALOG_FILES = "${docbook_sgml_dtd_41}/sgml/dtd/docbook-4.1/docbook.cat";
-
-  patches = [ ./module-dir.patch ./docbook2man.patch ];
-
-  postInstall = "rm $out/sbin/insmod.static"; # don't need it
-
-  # We don't want bash (and therefore glibc) in the closure of the
-  # output, since we want to put this in a initrd.
-  dontPatchShebangs = stdenv ? isDietLibC;
-
-  meta = {
-    homepage = http://www.kernel.org/pub/linux/utils/kernel/module-init-tools/;
-    description = "Tools for loading and managing Linux kernel modules";
-  };
-}
diff --git a/pkgs/os-specific/linux/module-init-tools/docbook2man.patch b/pkgs/os-specific/linux/module-init-tools/docbook2man.patch
deleted file mode 100644
index 4de07b658a91..000000000000
--- a/pkgs/os-specific/linux/module-init-tools/docbook2man.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Naur module-init-tools-3.16-orig/Makefile.in module-init-tools-3.16/Makefile.in
---- module-init-tools-3.16-orig/Makefile.in	2011-06-02 13:56:45.000000000 -0400
-+++ module-init-tools-3.16/Makefile.in	2011-10-01 23:59:30.584443193 -0400
-@@ -174,7 +174,7 @@
- CYGPATH_W = @CYGPATH_W@
- DEFS = @DEFS@
- DEPDIR = @DEPDIR@
--DOCBOOKTOMAN = @DOCBOOKTOMAN@
-+DOCBOOKTOMAN = @DOCBOOKTOMAN@ --sgml
- ECHO_C = @ECHO_C@
- ECHO_N = @ECHO_N@
- ECHO_T = @ECHO_T@
diff --git a/pkgs/os-specific/linux/module-init-tools/module-dir.patch b/pkgs/os-specific/linux/module-init-tools/module-dir.patch
deleted file mode 100644
index 95c7559604dd..000000000000
--- a/pkgs/os-specific/linux/module-init-tools/module-dir.patch
+++ /dev/null
@@ -1,161 +0,0 @@
-commit cf2c95edb7918bc658f6cae93793c1949fc9cb6e
-Author: David Guibert <david.guibert@gmail.com>
-Date:   Fri Aug 5 14:20:12 2011 +0200
-
-    introduce module-dir
-
-diff --git a/depmod.c b/depmod.c
-index a1d2f8c..9362a35 100644
---- a/depmod.c
-+++ b/depmod.c
-@@ -48,9 +48,6 @@
- 
- #include "testing.h"
- 
--#ifndef MODULE_DIR
--#define MODULE_DIR "/lib/modules/"
--#endif
- 
- #ifndef MODULE_BUILTIN_KEY
- #define MODULE_BUILTIN_KEY "built-in"
-@@ -1516,6 +1513,7 @@ static int parse_config_file(const char *filename,
- 	char *line;
- 	unsigned int linenum = 0;
- 	FILE *cfile;
-+ 	char *module_dir;
- 
- 	cfile = fopen(filename, "r");
- 	if (!cfile) {
-@@ -1525,6 +1523,10 @@ static int parse_config_file(const char *filename,
- 		return 0;
- 	}
- 
-+        if((module_dir = getenv("MODULE_DIR")) == NULL) {
-+                module_dir = "/lib/modules/";
-+        }
-+
- 	while ((line = getline_wrapped(cfile, &linenum)) != NULL) {
- 		char *ptr = line;
- 		char *cmd, *modname;
-@@ -1550,7 +1552,7 @@ static int parse_config_file(const char *filename,
- 					continue;
- 				}
- 				nofail_asprintf(&dirname, "%s%s%s/%s", basedir,
--					MODULE_DIR, kernelversion, search_path);
-+					module_dir, kernelversion, search_path);
- 				len = strlen(dirname);
- 				*search = add_search(dirname, len, *search);
- 				free(dirname);
-@@ -1565,7 +1567,7 @@ static int parse_config_file(const char *filename,
- 				continue;
- 
- 			nofail_asprintf(&pathname, "%s%s%s/%s/%s.ko", basedir,
--				MODULE_DIR, kernelversion, subdir, modname);
-+				module_dir, kernelversion, subdir, modname);
- 
- 			*overrides = add_override(pathname, *overrides);
- 			free(pathname);
-@@ -1737,6 +1739,7 @@ int main(int argc, char *argv[])
- 	char *basedir = "", *dirname, *version;
- 	char *system_map = NULL, *module_symvers = NULL;
- 	int i;
-+ 	char *module_dir;
- 	const char *config = NULL;
- 
- 	if (native_endianness() == 0)
-@@ -1832,7 +1835,11 @@ int main(int argc, char *argv[])
- 	if (optind == argc)
- 		all = 1;
- 
--	nofail_asprintf(&dirname, "%s%s%s", basedir, MODULE_DIR, version);
-+        if((module_dir = getenv("MODULE_DIR")) == NULL) {
-+                module_dir = "/lib/modules/";
-+        }
-+
-+	nofail_asprintf(&dirname, "%s%s%s", basedir, module_dir, version);
- 
- 	if (maybe_all) {
- 		if (!doing_stdout && !depfile_out_of_date(dirname))
-@@ -1850,7 +1857,7 @@ int main(int argc, char *argv[])
- 		size_t len;
- 
- 		nofail_asprintf(&dirname, "%s%s%s/updates", basedir,
--				MODULE_DIR, version);
-+				module_dir, version);
- 		len = strlen(dirname);
- 		search = add_search(dirname, len, search);
- 	}
-diff --git a/modinfo.c b/modinfo.c
-index 1dd8469..67b1041 100644
---- a/modinfo.c
-+++ b/modinfo.c
-@@ -19,9 +19,6 @@
- #include "zlibsupport.h"
- #include "testing.h"
- 
--#ifndef MODULE_DIR
--#define MODULE_DIR "/lib/modules"
--#endif
- 
- struct param
- {
-@@ -193,6 +190,11 @@ static struct elf_file *grab_module(const char *name,
- 	struct utsname buf;
- 	char *depname, *p, *moddir;
- 	struct elf_file *module;
-+ 	char *module_dir;
-+
-+        if((module_dir = getenv("MODULE_DIR")) == NULL) {
-+                module_dir = "/lib/modules/";
-+        }
- 
- 	if (strchr(name, '.') || strchr(name, '/')) {
- 		module = grab_elf_file(name);
-@@ -207,9 +209,9 @@ static struct elf_file *grab_module(const char *name,
- 		kernel = buf.release;
- 	}
- 	if (strlen(basedir))
--		nofail_asprintf(&moddir, "%s/%s/%s", basedir, MODULE_DIR, kernel);
-+		nofail_asprintf(&moddir, "%s/%s/%s", basedir, module_dir, kernel);
- 	else
--		nofail_asprintf(&moddir, "%s/%s", MODULE_DIR, kernel);
-+		nofail_asprintf(&moddir, "%s/%s", module_dir, kernel);
- 
- 	/* Search for it in modules.dep. */
- 	nofail_asprintf(&depname, "%s/%s", moddir, "modules.dep");
-diff --git a/modprobe.c b/modprobe.c
-index 5464f45..d9fbf9d 100644
---- a/modprobe.c
-+++ b/modprobe.c
-@@ -86,10 +86,6 @@ typedef enum
- 
- } modprobe_flags_t;
- 
--#ifndef MODULE_DIR
--#define MODULE_DIR "/lib/modules"
--#endif
--
- /**
-  * print_usage - output the prefered program usage
-  *
-@@ -2136,6 +2132,7 @@ int main(int argc, char *argv[])
- 	struct modprobe_conf conf = {};
- 
- 	recursion_depth = 0;
-+ 	char *module_dir = NULL;
- 
- 	/* Prepend options from environment. */
- 	argv = merge_args(getenv("MODPROBE_OPTIONS"), argv, &argc);
-@@ -2233,7 +2230,11 @@ int main(int argc, char *argv[])
- 	if (argc < optind + 1 && !dump_config && !list_only)
- 		print_usage(argv[0]);
- 
--	nofail_asprintf(&dirname, "%s%s/%s", basedir, MODULE_DIR, buf.release);
-+	if((module_dir = getenv("MODULE_DIR")) == NULL) {
-+		module_dir = "/lib/modules";
-+	}
-+
-+	nofail_asprintf(&dirname, "%s%s/%s", basedir, module_dir, buf.release);
- 
- 	/* Old-style -t xxx wildcard?  Only with -l. */
- 	if (list_only) {