modprobe-small: make applets individually selectable
No binary (build failed)
—
(log yok)
| @@ -4,8 +4,7 @@ | |
| # enabling it. Run it after applets.h is generated. | |
| # CONFIG_applet names | |
| - | grep ^IF_ applets.h | grep -v IF_FEATURE_ | sed 's/IF_\([A-Z0-9._-]*\)(.*/\1/' \ |
| - | | grep -v MODPROBE_SMALL \ |
| + | grep ^IF_ applets.h | grep -v ^IF_FEATURE_ | sed 's/IF_\([A-Z0-9._-]*\)(.*/\1/' \ |
| | sort | uniq \ | |
| >applets_APP1 | |
| @@ -14,7 +14,6 @@ apps="` | |
| grep ^IF_ include/applets.h \ | |
| | grep -v ^IF_FEATURE_ \ | |
| | sed 's/IF_\([A-Z0-9._-]*\)(.*/\1/' \ | |
| - | | grep -v ^MODPROBE_SMALL \ |
| | sort | uniq | |
| `" | |
| @@ -46,6 +45,11 @@ for app in $apps; do | |
| : $((fail++)) | |
| echo "Build error for ${app}" | |
| mv .config busybox_config_${app} | |
| + | elif ! grep -q '^#define NUM_APPLETS 1$' include/NUM_APPLETS.h; then |
| + | mv busybox busybox_${app} |
| + | : $((fail++)) |
| + | echo "NUM_APPLETS != 1 for ${app}: `cat include/NUM_APPLETS.h`" |
| + | mv .config busybox_config_${app} |
| else | |
| mv busybox busybox_${app} | |
| rm busybox_make_${app}.log | |
| @@ -53,5 +57,6 @@ for app in $apps; do | |
| mv .config.SV .config | |
| #exit | |
| done | |
| + | touch .config # or else next "make" can be confused |
| echo "Failures: $fail" | |
| test $fail = 0 # set exitcode | |
| @@ -9,15 +9,16 @@ | |
| */ | |
| //config:config DEPMOD | |
| //config: bool "depmod" | |
| - | //config: default n |
| - | //config: depends on !MODPROBE_SMALL |
| + | //config: default y |
| //config: select PLATFORM_LINUX | |
| //config: help | |
| //config: depmod generates modules.dep (and potentially modules.alias | |
| //config: and modules.symbols) that contain dependency information | |
| //config: for modprobe. | |
| - | //applet:IF_DEPMOD(APPLET(depmod, BB_DIR_SBIN, BB_SUID_DROP)) |
| + | //kbuild:ifneq ($(CONFIG_MODPROBE_SMALL),y) |
| + | //applet:IF_DEPMOD(IF_NOT_MODPROBE_SMALL(APPLET(depmod, BB_DIR_SBIN, BB_SUID_DROP))) |
| + | //kbuild:endif |
| //kbuild:lib-$(CONFIG_DEPMOD) += depmod.o modutils.o | |
| @@ -9,14 +9,15 @@ | |
| //config:config INSMOD | |
| //config: bool "insmod" | |
| //config: default n | |
| - | //config: depends on !MODPROBE_SMALL |
| //config: select PLATFORM_LINUX | |
| //config: help | |
| //config: insmod is used to load specified modules in the running kernel. | |
| - | //applet:IF_INSMOD(APPLET(insmod, BB_DIR_SBIN, BB_SUID_DROP)) |
| + | //applet:IF_INSMOD(IF_NOT_MODPROBE_SMALL(APPLET(insmod, BB_DIR_SBIN, BB_SUID_DROP))) |
| + | //kbuild:ifneq ($(CONFIG_MODPROBE_SMALL),y) |
| //kbuild:lib-$(CONFIG_INSMOD) += insmod.o modutils.o | |
| + | //kbuild:endif |
| #include "libbb.h" | |
| #include "modutils.h" | |
| @@ -9,25 +9,26 @@ | |
| */ | |
| //config:config LSMOD | |
| //config: bool "lsmod" | |
| - | //config: default n |
| - | //config: depends on !MODPROBE_SMALL |
| + | //config: default y |
| //config: select PLATFORM_LINUX | |
| //config: help | |
| //config: lsmod is used to display a list of loaded modules. | |
| //config: | |
| //config:config FEATURE_LSMOD_PRETTY_2_6_OUTPUT | |
| //config: bool "Pretty output" | |
| - | //config: default n |
| - | //config: depends on LSMOD |
| + | //config: default y |
| + | //config: depends on LSMOD && !MODPROBE_SMALL |
| //config: select PLATFORM_LINUX | |
| //config: help | |
| //config: This option makes output format of lsmod adjusted to | |
| //config: the format of module-init-tools for Linux kernel 2.6. | |
| //config: Increases size somewhat. | |
| - | //applet:IF_LSMOD(APPLET(lsmod, BB_DIR_SBIN, BB_SUID_DROP)) |
| + | //applet:IF_LSMOD(IF_NOT_MODPROBE_SMALL(APPLET(lsmod, BB_DIR_SBIN, BB_SUID_DROP))) |
| + | //kbuild:ifneq ($(CONFIG_MODPROBE_SMALL),y) |
| //kbuild:lib-$(CONFIG_LSMOD) += lsmod.o modutils.o | |
| + | //kbuild:endif |
| //usage:#if !ENABLE_MODPROBE_SMALL | |
| //usage:#define lsmod_trivial_usage | |
| @@ -25,11 +25,11 @@ | |
| //config: help | |
| //config: Check if the module is already loaded. | |
| - | //applet:IF_MODPROBE_SMALL(APPLET(modprobe, BB_DIR_SBIN, BB_SUID_DROP)) |
| - | //applet:IF_MODPROBE_SMALL(APPLET_ODDNAME(depmod, modprobe, BB_DIR_SBIN, BB_SUID_DROP, depmod)) |
| - | //applet:IF_MODPROBE_SMALL(APPLET_ODDNAME(insmod, modprobe, BB_DIR_SBIN, BB_SUID_DROP, insmod)) |
| - | //applet:IF_MODPROBE_SMALL(APPLET_ODDNAME(lsmod, modprobe, BB_DIR_SBIN, BB_SUID_DROP, lsmod)) |
| - | //applet:IF_MODPROBE_SMALL(APPLET_ODDNAME(rmmod, modprobe, BB_DIR_SBIN, BB_SUID_DROP, rmmod)) |
| + | //applet:IF_MODPROBE(IF_MODPROBE_SMALL(APPLET(modprobe, BB_DIR_SBIN, BB_SUID_DROP))) |
| + | //applet:IF_DEPMOD(IF_MODPROBE_SMALL(APPLET_ODDNAME(depmod, modprobe, BB_DIR_SBIN, BB_SUID_DROP, depmod))) |
| + | //applet:IF_INSMOD(IF_MODPROBE_SMALL(APPLET_ODDNAME(insmod, modprobe, BB_DIR_SBIN, BB_SUID_DROP, insmod))) |
| + | //applet:IF_LSMOD(IF_MODPROBE_SMALL(APPLET_ODDNAME(lsmod, modprobe, BB_DIR_SBIN, BB_SUID_DROP, lsmod))) |
| + | //applet:IF_RMMOD(IF_MODPROBE_SMALL(APPLET_ODDNAME(rmmod, modprobe, BB_DIR_SBIN, BB_SUID_DROP, rmmod))) |
| //kbuild:lib-$(CONFIG_MODPROBE_SMALL) += modprobe-small.o | |
| @@ -930,7 +930,7 @@ int modprobe_main(int argc UNUSED_PARAM, char **argv) | |
| IF_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE(char *options;) | |
| /* are we lsmod? -> just dump /proc/modules */ | |
| - | if ('l' == applet0) { |
| + | if (ENABLE_LSMOD && 'l' == applet0) { |
| xprint_and_close_file(xfopen_for_read("/proc/modules")); | |
| return EXIT_SUCCESS; | |
| } | |
| @@ -940,14 +940,14 @@ int modprobe_main(int argc UNUSED_PARAM, char **argv) | |
| /* Prevent ugly corner cases with no modules at all */ | |
| modinfo = xzalloc(sizeof(modinfo[0])); | |
| - | if ('i' != applet0) { /* not insmod */ |
| + | if (!ENABLE_INSMOD || 'i' != applet0) { /* not insmod */ |
| /* Goto modules directory */ | |
| xchdir(CONFIG_DEFAULT_MODULES_DIR); | |
| } | |
| uname(&uts); /* never fails */ | |
| /* depmod? */ | |
| - | if ('d' == applet0) { |
| + | if (ENABLE_DEPMOD && 'd' == applet0) { |
| /* Supported: | |
| * -n: print result to stdout | |
| * -a: process all modules (default) | |
| @@ -986,11 +986,11 @@ int modprobe_main(int argc UNUSED_PARAM, char **argv) | |
| argv += optind; | |
| /* are we rmmod? -> simulate modprobe -r */ | |
| - | if ('r' == applet0) { |
| + | if (ENABLE_RMMOD && 'r' == applet0) { |
| option_mask32 |= OPT_r; | |
| } | |
| - | if ('i' != applet0) { /* not insmod */ |
| + | if (!ENABLE_INSMOD || 'i' != applet0) { /* not insmod */ |
| /* Goto $VERSION directory */ | |
| xchdir(uts.release); | |
| } | |
| @@ -1014,7 +1014,7 @@ int modprobe_main(int argc UNUSED_PARAM, char **argv) | |
| argv[1] = NULL; | |
| #endif | |
| - | if ('i' == applet0) { /* insmod */ |
| + | if (ENABLE_INSMOD && 'i' == applet0) { /* insmod */ |
| size_t len; | |
| void *map; | |
| @@ -1034,7 +1034,7 @@ int modprobe_main(int argc UNUSED_PARAM, char **argv) | |
| } | |
| /* Try to load modprobe.dep.bb */ | |
| - | if ('r' != applet0) { /* not rmmod */ |
| + | if (!ENABLE_RMMOD || 'r' != applet0) { /* not rmmod */ |
| load_dep_bb(); | |
| } | |
| @@ -9,8 +9,7 @@ | |
| */ | |
| //config:config MODPROBE | |
| //config: bool "modprobe" | |
| - | //config: default n |
| - | //config: depends on !MODPROBE_SMALL |
| + | //config: default y |
| //config: select PLATFORM_LINUX | |
| //config: help | |
| //config: Handle the loading of modules, and their dependencies on a high | |
| @@ -18,8 +17,8 @@ | |
| //config: | |
| //config:config FEATURE_MODPROBE_BLACKLIST | |
| //config: bool "Blacklist support" | |
| - | //config: default n |
| - | //config: depends on MODPROBE |
| + | //config: default y |
| + | //config: depends on MODPROBE && !MODPROBE_SMALL |
| //config: select PLATFORM_LINUX | |
| //config: help | |
| //config: Say 'y' here to enable support for the 'blacklist' command in | |
| @@ -28,9 +27,11 @@ | |
| //config: hardware autodetection scripts to load modules like evdev, frame | |
| //config: buffer drivers etc. | |
| - | //applet:IF_MODPROBE(APPLET(modprobe, BB_DIR_SBIN, BB_SUID_DROP)) |
| + | //applet:IF_MODPROBE(IF_NOT_MODPROBE_SMALL(APPLET(modprobe, BB_DIR_SBIN, BB_SUID_DROP))) |
| + | //kbuild:ifneq ($(CONFIG_MODPROBE_SMALL),y) |
| //kbuild:lib-$(CONFIG_MODPROBE) += modprobe.o modutils.o | |
| + | //kbuild:endif |
| #include "libbb.h" | |
| #include "modutils.h" | |
| @@ -10,14 +10,15 @@ | |
| //config:config RMMOD | |
| //config: bool "rmmod" | |
| //config: default n | |
| - | //config: depends on !MODPROBE_SMALL |
| //config: select PLATFORM_LINUX | |
| //config: help | |
| //config: rmmod is used to unload specified modules from the kernel. | |
| - | //applet:IF_RMMOD(APPLET(rmmod, BB_DIR_SBIN, BB_SUID_DROP)) |
| + | //applet:IF_RMMOD(IF_NOT_MODPROBE_SMALL(APPLET(rmmod, BB_DIR_SBIN, BB_SUID_DROP))) |
| + | //kbuild:ifneq ($(CONFIG_MODPROBE_SMALL),y) |
| //kbuild:lib-$(CONFIG_RMMOD) += rmmod.o modutils.o | |
| + | //kbuild:endif |
| //usage:#if !ENABLE_MODPROBE_SMALL | |
| //usage:#define rmmod_trivial_usage | |