1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
diff -Naur kmod-7-orig/libkmod/libkmod.c kmod-7/libkmod/libkmod.c
--- kmod-7-orig/libkmod/libkmod.c 2012-03-15 08:19:16.750010226 -0400
+++ kmod-7/libkmod/libkmod.c 2012-04-04 16:28:37.442130553 -0400
@@ -200,7 +200,7 @@
static char *get_kernel_release(const char *dirname)
{
struct utsname u;
- char *p;
+ char *p, *dirname_prefix;
if (dirname != NULL)
return path_make_absolute_cwd(dirname);
@@ -208,7 +208,10 @@
if (uname(&u) < 0)
return NULL;
- if (asprintf(&p, "%s/%s", dirname_default_prefix, u.release) < 0)
+ if ((dirname_prefix = getenv("MODULE_DIR")) == NULL)
+ dirname_prefix = dirname_default_prefix;
+
+ if (asprintf(&p, "%s/%s", dirname_prefix, u.release) < 0)
return NULL;
return p;
diff -Naur kmod-7-orig/tools/kmod-depmod.c kmod-7/tools/kmod-depmod.c
--- kmod-7-orig/tools/kmod-depmod.c 2012-03-09 09:31:04.086042138 -0500
+++ kmod-7/tools/kmod-depmod.c 2012-04-04 16:34:53.525968272 -0400
@@ -2523,7 +2523,7 @@
{
FILE *out = NULL;
int err = 0, all = 0, maybe_all = 0, n_config_paths = 0;
- char *root = NULL;
+ char *root = NULL, *dirname;
const char **config_paths = NULL;
const char *system_map = NULL;
const char *module_symvers = NULL;
@@ -2632,8 +2632,16 @@
cfg.kversion = un.release;
}
+ if ((dirname = getenv("MODULE_DIR")) == NULL) {
+ dirname = "%s" ROOTPREFIX "/lib/modules/%s";
+ } else {
+ char *full_dirname = malloc(strlen(dirname) + sizeof "%%s%%s");
+ sprintf(full_dirname, "%%s%s%%s", dirname);
+ dirname = full_dirname;
+ }
+
cfg.dirnamelen = snprintf(cfg.dirname, PATH_MAX,
- "%s" ROOTPREFIX "/lib/modules/%s",
+ dirname,
root == NULL ? "" : root, cfg.kversion);
if (optind == argc)
|