summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYury G. Kudryashov <urkud.urkud@gmail.com>2012-03-26 15:15:27 +0000
committerYury G. Kudryashov <urkud.urkud@gmail.com>2012-03-26 15:15:27 +0000
commit0fe84d6eed4fb3318270ff8b67316f25b216656e (patch)
treea1ce6a362584147dbffeb9af7821fc7924ba8a21
parentd465b0798cd9e10e4a35e4150a3d0cac47e6a7a3 (diff)
Rewrite modules-related packagingbackups/kmod-MODULE_DIR@33576
* Replace module-init-tools by kmod * Drop MODULE_DIR patch We'll maintain /lib/modules/modversion symlink instead. This way both module-init-tools and libkmod will work without patches. svn path=/nixpkgs/branches/kmod-MODULE_DIR/; revision=33428
-rw-r--r--pkgs/applications/virtualization/virtualbox/default.nix3
-rw-r--r--pkgs/applications/virtualization/virtualbox/guest-additions/default.nix11
-rw-r--r--pkgs/build-support/kernel/modules-closure.nix10
-rw-r--r--pkgs/build-support/kernel/modules-closure.sh12
-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
-rw-r--r--pkgs/top-level/all-packages.nix11
15 files changed, 34 insertions, 259 deletions
diff --git a/pkgs/applications/virtualization/virtualbox/default.nix b/pkgs/applications/virtualization/virtualbox/default.nix
index 9fa26eba4ab0..d2fc82c38e1e 100644
--- a/pkgs/applications/virtualization/virtualbox/default.nix
+++ b/pkgs/applications/virtualization/virtualbox/default.nix
@@ -82,8 +82,7 @@ stdenv.mkDerivation {
# Install kernel module
cd src
- kernelVersion=$(cd ${kernel}/lib/modules; ls)
- export MODULE_DIR=$out/lib/modules/$kernelVersion/misc
+ export MODULE_DIR=$out/lib/modules/${kernel.modDirVersion}/misc
# Remove root ownership stuff, since this does not work in a chroot environment
for i in `find . -name Makefile`; do
diff --git a/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix b/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix
index f9adf6132f5d..eb8eddb6a3f1 100644
--- a/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix
+++ b/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix
@@ -114,12 +114,11 @@ stdenv.mkDerivation {
for i in *
do
cd $i
- kernelVersion=$(cd ${kernel}/lib/modules; ls)
- export MODULE_DIR=$out/lib/modules/$kernelVersion/misc
- find . -type f | xargs sed -i -e "s|-o root||g" \
- -e "s|-g root||g"
- make install
- cd ..
+ export MODULE_DIR=$out/lib/modules/${kernel.modDirVersion}/misc
+ find . -type f | xargs sed -i -e "s|-o root||g" \
+ -e "s|-g root||g"
+ make install
+ cd ..
done
'';
diff --git a/pkgs/build-support/kernel/modules-closure.nix b/pkgs/build-support/kernel/modules-closure.nix
index cc197edbef19..a91d5a4bfc81 100644
--- a/pkgs/build-support/kernel/modules-closure.nix
+++ b/pkgs/build-support/kernel/modules-closure.nix
@@ -1,15 +1,15 @@
-# Given a kernel build (with modules in $kernel/lib/modules/VERSION),
+# Given a modules tree (with modules in $modulesTree/lib/modules/VERSION),
# produce a module tree in $out/lib/modules/VERSION that contains only
# the modules identified by `rootModules', plus their dependencies.
# Also generate an appropriate modules.dep.
-{ stdenv, kernel, nukeReferences, rootModules
-, module_init_tools, allowMissing ? false }:
+{ stdenv, modulesTree, nukeReferences, rootModules
+, kmod, allowMissing ? false }:
stdenv.mkDerivation {
- name = kernel.name + "-shrunk";
+ name = modulesTree.name + "-shrunk";
builder = ./modules-closure.sh;
buildInputs = [nukeReferences];
- inherit kernel rootModules module_init_tools allowMissing;
+ inherit modulesTree rootModules kmod allowMissing;
allowedReferences = ["out"];
}
diff --git a/pkgs/build-support/kernel/modules-closure.sh b/pkgs/build-support/kernel/modules-closure.sh
index aa2615eb578d..9ce8d52ba211 100644
--- a/pkgs/build-support/kernel/modules-closure.sh
+++ b/pkgs/build-support/kernel/modules-closure.sh
@@ -2,19 +2,17 @@ source $stdenv/setup
set -o pipefail
-PATH=$module_init_tools/sbin:$PATH
-
-version=$(cd $kernel/lib/modules && ls -d *)
+PATH=$kmod/sbin:$PATH
+version=$(cd $modulesTree/lib/modules && ls -d *)
echo "kernel version is $version"
-export MODULE_DIR=$(readlink -f $kernel/lib/modules/)
-
+mkdir empty
# Determine the dependencies of each root module.
closure=
for module in $rootModules; do
echo "root module: $module"
- deps=$(modprobe --config /dev/null --set-version "$version" --show-depends "$module" \
+ deps=$(modprobe -S "$version" -d "$modulesTree" --show-depends "$module" \
| sed 's/^insmod //') \
|| if test -z "$allowMissing"; then exit 1; fi
#for i in $deps; do echo $i; done
@@ -41,4 +39,4 @@ for module in $closure; do
echo $target >> $out/insmod-list
done
-MODULE_DIR=$out/lib/modules/ depmod -a $version
+depmod -b $out -a $version
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) {
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 52b3173fc594..8c70085ff563 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -325,10 +325,9 @@ let
makeWrapper = makeSetupHook {} ../build-support/make-wrapper/make-wrapper.sh;
- makeModulesClosure = {kernel, rootModules, allowMissing ? false}:
+ makeModulesClosure = {modulesTree, rootModules, allowMissing ? false}:
import ../build-support/kernel/modules-closure.nix {
- inherit stdenv module_init_tools kernel nukeReferences
- rootModules allowMissing;
+ inherit stdenv kmod modulesTree nukeReferences rootModules allowMissing;
};
pathsFromGraph = ../build-support/kernel/paths-from-graph.pl;
@@ -5832,15 +5831,15 @@ let
mingetty = callPackage ../os-specific/linux/mingetty { };
- module_init_tools = callPackage ../os-specific/linux/module-init-tools { };
+ module_init_tools = pkgs.kmod;
mountall = callPackage ../os-specific/linux/mountall {
automake = automake111x;
};
aggregateModules = modules:
- import ../os-specific/linux/module-init-tools/aggregator.nix {
- inherit stdenv module_init_tools modules buildEnv;
+ import ../os-specific/linux/kmod/aggregator.nix {
+ inherit stdenv kmod modules buildEnv;
};
modutils = callPackage ../os-specific/linux/modutils {