summaryrefslogtreecommitdiffstats
path: root/core/busybox
diff options
context:
space:
mode:
authorTimo Teras <timo.teras@iki.fi>2009-01-03 17:51:50 +0200
committerTimo Teras <timo.teras@iki.fi>2009-01-03 17:51:50 +0200
commitdf331d5ac63b7897b5f3c2c967e3e94ac12c2d54 (patch)
treedceab731e97b0fc25d40ab15f62a10ebc39e926c /core/busybox
parentdc0acbbc6a210b8af56af110ae5f4af868b6b755 (diff)
downloadaports-df331d5ac63b7897b5f3c2c967e3e94ac12c2d54.tar.bz2
aports-df331d5ac63b7897b5f3c2c967e3e94ac12c2d54.tar.xz
core/busybox: hotfix for depmod -b
Diffstat (limited to 'core/busybox')
-rw-r--r--core/busybox/APKBUILD4
-rw-r--r--core/busybox/busybox-1.13-depmod.patch115
2 files changed, 118 insertions, 1 deletions
diff --git a/core/busybox/APKBUILD b/core/busybox/APKBUILD
index 4b1b5b8d..0912329a 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 00000000..ffed432f
--- /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",