[FIX] Replace hard-coded MODVERDIR in modpost

From: Andreas Gruenbacher
Date: Thu Sep 16 2004 - 09:23:12 EST


Hello,

when building external modules, MODVERDIR is relative to the
external module instead of in the kernel source tree. Use the
MODVERDIR environment variable instead of the hard-coded path
in modpost.


Index: linux-2.6.8/scripts/mod/sumversion.c
===================================================================
--- linux-2.6.8.orig/scripts/mod/sumversion.c
+++ linux-2.6.8/scripts/mod/sumversion.c
@@ -416,7 +416,8 @@ static int get_version(const char *modna
struct md4_ctx md;
char *sources, *end, *fname;
const char *basename;
- char filelist[sizeof(".tmp_versions/%s.mod") + strlen(modname)];
+ char filelist[strlen(getenv("MODVERDIR")) + strlen("/") +
+ strlen(modname) - strlen(".o") + strlen(".mod") + 1 ];

/* Source files for module are in .tmp_versions/modname.mod,
after the first line. */
@@ -424,9 +425,8 @@ static int get_version(const char *modna
basename = strrchr(modname, '/') + 1;
else
basename = modname;
- sprintf(filelist, ".tmp_versions/%s", basename);
- /* Truncate .o, add .mod */
- strcpy(filelist + strlen(filelist)-2, ".mod");
+ sprintf(filelist, "%s/%.*s.mod", getenv("MODVERDIR"),
+ (int) strlen(basename) - 2, basename);

file = grab_file(filelist, &len);
if (!file) {


Cheers,
--
Andreas Gruenbacher <agruen@xxxxxxx>
SUSE Labs, SUSE LINUX AG

Date: Thu, 16 Sep 2004 16:08:38 +0200
From: Andreas Gruenbacher <agruen@xxxxxxx>
Subject: Fix .tmp_versions for external modules

When building external modules, MODVERDIR is relative to the
external module instead of in the kernel source tree. Use the
MODVERDIR environment variable instead of the hard-coded path
in modpost.

Index: linux-2.6.8/scripts/mod/sumversion.c
===================================================================
--- linux-2.6.8.orig/scripts/mod/sumversion.c
+++ linux-2.6.8/scripts/mod/sumversion.c
@@ -416,7 +416,8 @@ static int get_version(const char *modna
struct md4_ctx md;
char *sources, *end, *fname;
const char *basename;
- char filelist[sizeof(".tmp_versions/%s.mod") + strlen(modname)];
+ char filelist[strlen(getenv("MODVERDIR")) + strlen("/") +
+ strlen(modname) - strlen(".o") + strlen(".mod") + 1 ];

/* Source files for module are in .tmp_versions/modname.mod,
after the first line. */
@@ -424,9 +425,8 @@ static int get_version(const char *modna
basename = strrchr(modname, '/') + 1;
else
basename = modname;
- sprintf(filelist, ".tmp_versions/%s", basename);
- /* Truncate .o, add .mod */
- strcpy(filelist + strlen(filelist)-2, ".mod");
+ sprintf(filelist, "%s/%.*s.mod", getenv("MODVERDIR"),
+ (int) strlen(basename) - 2, basename);

file = grab_file(filelist, &len);
if (!file) {