diff options
author | Timo Teras <timo.teras@iki.fi> | 2009-01-03 17:51:50 +0200 |
---|---|---|
committer | Timo Teras <timo.teras@iki.fi> | 2009-01-03 17:51:50 +0200 |
commit | df331d5ac63b7897b5f3c2c967e3e94ac12c2d54 (patch) | |
tree | dceab731e97b0fc25d40ab15f62a10ebc39e926c /core/busybox | |
parent | dc0acbbc6a210b8af56af110ae5f4af868b6b755 (diff) | |
download | aports-df331d5ac63b7897b5f3c2c967e3e94ac12c2d54.tar.bz2 aports-df331d5ac63b7897b5f3c2c967e3e94ac12c2d54.tar.xz |
core/busybox: hotfix for depmod -b
Diffstat (limited to 'core/busybox')
-rw-r--r-- | core/busybox/APKBUILD | 4 | ||||
-rw-r--r-- | core/busybox/busybox-1.13-depmod.patch | 115 |
2 files changed, 118 insertions, 1 deletions
diff --git a/core/busybox/APKBUILD b/core/busybox/APKBUILD index 4b1b5b8db4..0912329a2b 100644 --- a/core/busybox/APKBUILD +++ b/core/busybox/APKBUILD @@ -1,6 +1,6 @@ pkgname=busybox pkgver=1.13.2 -pkgrel=0 +pkgrel=1 pkgdesc="Size optimized toolbox of many common UNIX utilities" url=http://busybox.net license=GPL-2 @@ -9,6 +9,7 @@ depends=uclibc source="http://busybox.net/downloads/$pkgname-$pkgver.tar.bz2 $pkgname-1.12.1-vi-path.patch $pkgname-1.11.1-bb.patch + $pkgname-1.13-depmod.patch busyboxconfig" build() { @@ -32,4 +33,5 @@ build() { md5sums="9e2a604d18bef219a5a6bf3acf78b9e1 busybox-1.13.2.tar.bz2 f5a8ae3145aa249868c1a1abc319c228 busybox-1.12.1-vi-path.patch 4c0f3b486eaa0674961b7ddcd0c60a9b busybox-1.11.1-bb.patch +1ff318833f8a1c1741635184cfb461ab busybox-1.13-depmod.patch 0a32b03209b82e37e085f0bd06985518 busyboxconfig" diff --git a/core/busybox/busybox-1.13-depmod.patch b/core/busybox/busybox-1.13-depmod.patch new file mode 100644 index 0000000000..ffed432fdf --- /dev/null +++ b/core/busybox/busybox-1.13-depmod.patch @@ -0,0 +1,115 @@ +--- busybox/modutils/depmod.c (revision 24668) ++++ busybox/modutils/depmod.c (working copy) +@@ -33,7 +33,7 @@ + enum { + ARG_a = (1<<0), /* All modules, ignore mods in argv */ + ARG_A = (1<<1), /* Only emit .ko that are newer than modules.dep file */ +- ARG_b = (1<<2), /* not /lib/modules/$(uname -r)/ but this base-dir */ ++ ARG_b = (1<<2), /* base directory when modules are in staging area */ + ARG_e = (1<<3), /* with -F, print unresolved symbols */ + ARG_F = (1<<4), /* System.map that contains the symbols */ + ARG_n = (1<<5) /* dry-run, print to stdout only */ +@@ -57,7 +57,7 @@ + *first = info; + + info->dnext = info->dprev = info; +- info->name = xstrdup(fname); ++ info->name = xasprintf("/%s", fname); + info->modname = filename2modname(fname, NULL); + for (ptr = image; ptr < image + len - 10; ptr++) { + if (strncmp(ptr, "depends=", 8) == 0) { +@@ -123,44 +123,61 @@ + } + } + ++static void xfreopen_write(const char *file, FILE *f) ++{ ++ if (freopen(file, "w", f) == NULL) ++ bb_perror_msg_and_die("can't open '%s'", file); ++} ++ + int depmod_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; + int depmod_main(int argc UNUSED_PARAM, char **argv) + { + module_info *modules = NULL, *m, *dep; +- char *moddir_base = (char *)CONFIG_DEFAULT_MODULES_DIR; ++ const char *moddir_base = "/"; ++ char *moddir, *version; ++ struct utsname uts; + int tmp; + + getopt32(argv, "aAb:eF:n", &moddir_base, NULL); + argv += optind; + + /* goto modules location */ ++ xchdir(moddir_base); + + /* If a version is provided, then that kernel version's module directory + * is used, rather than the current kernel version (as returned by + * "uname -r"). */ +- xchdir(moddir_base); +- if (*argv && (sscanf(*argv, "%d.%d.%d", &tmp, &tmp, &tmp) == 3)) { +- xchdir(*argv++); ++ if (*argv && sscanf(*argv, "%d.%d.%d", &tmp, &tmp, &tmp) == 3) { ++ version = *argv++; + } else { +- struct utsname uts; + uname(&uts); +- xchdir(uts.release); ++ version = uts.release; + } +- /* If no modules are given on the command-line, -a is on per default. */ +- option_mask32 |= *argv == NULL; ++ moddir = concat_path_file(&CONFIG_DEFAULT_MODULES_DIR[1], version); + + /* Scan modules */ +- moddir_base = xrealloc_getcwd_or_warn(NULL); +- do { +- recursive_action((option_mask32 & ARG_a) ? moddir_base : *argv, +- ACTION_RECURSE, parse_module, NULL, &modules, 0); +- } while (!(option_mask32 & ARG_a) && *(++argv)); ++ if (*argv) { ++ char *modfile; ++ struct stat sb; ++ do { ++ modfile = concat_path_file(moddir, *argv); ++ xstat(modfile, &sb); ++ parse_module(modfile, &sb, &modules, 0); ++ free(modfile); ++ } while (*(++argv)); ++ } else { ++ recursive_action(moddir, ACTION_RECURSE, ++ parse_module, NULL, &modules, 0); ++ } ++ ++ /* Prepare for writing out the dep files */ ++ xchdir(moddir); + if (ENABLE_FEATURE_CLEAN_UP) +- free(moddir_base); ++ free(moddir); + + /* Generate dependency and alias files */ + if (!(option_mask32 & ARG_n)) +- freopen(CONFIG_DEFAULT_DEPMOD_FILE, "w", stdout); ++ xfreopen_write(CONFIG_DEFAULT_DEPMOD_FILE, stdout); + for (m = modules; m != NULL; m = m->next) { + printf("%s:", m->name); + +@@ -179,7 +196,7 @@ + + #if ENABLE_FEATURE_MODUTILS_ALIAS + if (!(option_mask32 & ARG_n)) +- freopen("modules.alias", "w", stdout); ++ xfreopen_write("modules.alias", stdout); + for (m = modules; m != NULL; m = m->next) { + while (m->aliases) { + printf("alias %s %s\n", +@@ -190,7 +207,7 @@ + #endif + #if ENABLE_FEATURE_MODUTILS_SYMBOLS + if (!(option_mask32 & ARG_n)) +- freopen("modules.symbols", "w", stdout); ++ xfreopen_write("modules.symbols", stdout); + for (m = modules; m != NULL; m = m->next) { + while (m->symbols) { + printf("alias symbol:%s %s\n", |