aboutsummaryrefslogtreecommitdiff
path: root/applets (follow)
Commit message (Collapse)AuthorAgeFilesLines
* build system: prevent duplicate applet namesRon Yorston2018-11-271-1/+9
| | | | | | | | | | | | The embedded script feature makes it easier to create applets with duplicate names. Currently in such cases the build succeeds but the resulting executable doesn't work as the developer intended. Catch duplicate names when the applet tables are being generated and make the build fail. Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* Treat custom and applet scripts as appletsRon Yorston2018-11-171-0/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | BusyBox has support for embedded shell scripts. Two types can be distinguished: custom scripts and scripts implementing applets. Custom scripts should be placed in the 'embed' directory at build time. They are given a default applet configuration and appear as applets to the user but no further configuration is possible. Applet scripts are integrated with the BusyBox build system and are intended to be used to ship standard applets that just happen to be implemented as scripts. They can be configured at build time and appear just like native applets. Such scripts should be placed in the 'applets_sh' directory. A stub C program should be written to provide the usual applet configuration details and placed in a suitable subsystem directory. It may be helpful to have a configuration option to enable any dependencies the script requires: see the 'nologin' applet for an example. function old new delta scripted_main - 41 +41 applet_names 2773 2781 +8 applet_main 1600 1604 +4 i2cdetect_main 672 674 +2 applet_suid 100 101 +1 applet_install_loc 200 201 +1 applet_flags 100 101 +1 packed_usage 33180 33179 -1 tryexec 159 152 -7 evalcommand 1661 1653 -8 script_names 9 - -9 packed_scripts 123 114 -9 complete_cmd_dir_file 826 811 -15 shellexec 271 254 -17 find_command 1007 990 -17 busybox_main 642 624 -18 run_applet_and_exit 100 78 -22 find_script_by_name 51 - -51 ------------------------------------------------------------------------------ (add/remove: 1/2 grow/shrink: 6/9 up/down: 58/-174) Total: -116 bytes text data bss dec hex filename 950034 477 7296 957807 e9d6f busybox_old 949918 477 7296 957691 e9cfb busybox_unstripped Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* install.sh: don't clobber dangling symlinksBaruch Siach2018-07-311-1/+1
| | | | | | | | | | | | | | Symlinks in a subdirectory that is to become target rootfs are sometimes dangling because they link to canonical file names that are not present on the host, but are present relative to the target rootfs root. Don't copy over dangling symlinks when noclobber is enabled The -e test treats dangling symlinks as non-existent files. Add -h test that returns true for all symlinks. Cc: Yann E. MORIN <yann.morin.1998@free.fr> Signed-off-by: Baruch Siach <baruch@tkos.co.il> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* applets/install: don't try to install nothingYann E. MORIN2018-04-151-2/+4
| | | | | | | | | | | | | | | | | Commit 952d5a6024e7 (applets/install: accept more than one install option) changed the way we handle install options: before that commit, a missing install type would mean to install nothing; after, we would iterate over options, so we would never notice there was a mising option. Fix that by introducing an explicit --none option to specify to install nothing. Reported-by: Aaro Koskinen <aaro.koskinen@iki.fi> Cc: Aaro Koskinen <aaro.koskinen@iki.fi> Cc: Denys Vlasenko <vda.linux@googlemail.com> Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* build system: fix parallel building issueMichael Olbrich2018-04-141-2/+14
| | | | | | | | | | | | | | | | The files generated by the include/config/MARKER target are in the dependency list for applets/applet_tables. If applets/applet_tables is created first during applets_dir then it will be created again later as part of $(busybox-dirs). As a result include/applet_tables.h is created again. This time while other build commands may need it. Let applets_dir depend on include/config/MARKER to avoid this particular race condition and create the header files atomically to ensure that the compiler never sees incomplete files. Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* Fix install with hardlinks and a custom PREFIX. Closes 10801Denys Vlasenko2018-02-231-9/+9
| | | | | | | | | | | | Trying to install busybox with hardlinks and a custom PREFIX will fail for applets not in the /bin directory, because relative pathnames are used. applets/install.sh is *supposed to* use the absolute pathname for hardlinks but it fails to do so because the wrong check is used in the if statement. While fixing it, shore up other sloppy coding in applets/install.sh Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* applets/install: accept more than one install optionYann E. MORIN2018-01-041-12/+16
| | | | | | | | Currently, it is impossible to pass more than one option to the isntall script, so it totally prevents using --noclobber. Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* applets/install: respect noclobber for script wrappers tooYann E. MORIN2018-01-041-12/+8
| | | | | | | | Simplify the handling of --noclobber so that it applies to all types of installation types, even to script wrappers. Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* Automatically disable FEATURE_COMPRESS_USAGE for small builds.Denys Vlasenko2017-01-061-0/+3
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* build system: always rewrite NUM_APPLETS.hDenys Vlasenko2016-08-231-10/+11
| | | | | | | Conditional rewrite can keep NUM_APPLETS.h mtime old, this causes make to try to regenerate it at every invocation. Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* build system: different fix for include/applet_tables.h/include/NUM_APPLETS.hDenys Vlasenko2016-08-211-3/+16
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* build system: fix include/NUM_APPLETS.h generationDenys Vlasenko2016-08-141-5/+2
| | | | | | TBH, it's more like "work around my bad makefile-fu" than "fix"... Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* config: disentangle PREFER_APPLETS from SH_STANDALONE and SH_NOFORKDenys Vlasenko2016-07-221-1/+3
| | | | | | | | On user request. I thought enabling/disabling them all together is more consistent. Evidently, some people do want them to be separately selectable. Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* build system: fix a few warnings for allnoconfig buildDenys Vlasenko2016-07-051-0/+2
| | | | | | Not that allnoconfig build is useful in any way... Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* build system: finer-grained selection of search speedup table.Denys Vlasenko2016-04-021-32/+33
| | | | | | | | | | | KNOWN_APPNAME_OFFSETS=8 versus KNOWN_APPNAME_OFFSETS=0: function old new delta find_applet_by_name 55 136 +81 applet_nameofs - 14 +14 run_applet_and_exit 757 758 +1 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* applet_tables: save space by removing applet name offsetsRon Yorston2016-03-301-18/+60
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The array applet_nameofs consumes two bytes per applet. It encodes nofork/noexec flags suid flags the offset of the applet name in the applet_name string Change the applet_table build tool to store the flags in two separate arrays (applet_flags and applet_suid). Replace applet_nameofs[] with a smaller version that only stores a limited number of offsets. This requires changes to the macros APPLET_IS_NOFORK, APPLET_IS_NOEXEC and APPLET_SUID. According to Valgrind the original find_applet_by_name required 353 cycles per call, averaged over all names. Adjusting the number of known offsets allows space to be traded off against execution time: KNOWN_OFFSETS cycles bytes (wrt KNOWN_OFFSETS = 0) 0 9057 - 2 4604 32 4 2407 75 8 1342 98 16 908 130 32 884 194 This patch uses KNOWN_OFFSETS = 8. v2: Remove some dead code from the applet_table tool; Treat the applet in the middle of the table as a special case. v3: Use the middle applet to adjust the start of the linear search as well as the last applet found. v4: Use an augmented linear search in find_applet_by_name. Drop the special treatment of the middle name from get_applet_name: most of the advantage now derives from the last stored value. v5: Don't store index in applet_nameofs, it can be calculated. v6: Tweaks by Denys function old new delta find_applet_by_name 25 125 +100 applet_suid - 92 +92 run_applet_no_and_exit 452 460 +8 run_applet_and_exit 695 697 +2 applet_name_compare 31 - -31 applet_nameofs 734 14 -720 ------------------------------------------------------------------------------ (add/remove: 1/1 grow/shrink: 3/1 up/down: 202/-751) Total: -549 bytes text data bss dec hex filename 925464 906 17160 943530 e65aa busybox_old 924915 906 17160 942981 e6385 busybox_unstripped Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* Aboriginal linux/musl build fixesDenys Vlasenko2015-10-051-0/+9
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* applets: Add installation of individual binariesClayton Shotwell2015-07-011-2/+24
| | | | | | | | Adding support to install individual binaries if the option is enabled. This also installs the shared libbusybox.so.* library. Signed-off-by: Clayton Shotwell <clshotwe@rockwellcollins.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* false: make "false --help" exit with 1Denys Vlasenko2014-09-181-0/+17
| | | | | | | function old new delta run_applet_no_and_exit 447 445 -2 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* build system: use od -b instead of od -t x1Denys Vlasenko2013-11-261-6/+6
| | | | | | od -t is not available in non-CONFIG_DESKTOPed busybox od Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* build system: do not generate MAX_APPLET_NAME_LEN (unused)Denys Vlasenko2013-11-261-5/+5
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* buildsys: Add helper to list suid appletsBernhard Reutner-Fischer2013-07-261-0/+54
| | | | | | | | | | | | | Add a helper script that lists all applets that - do or may require SUID provileges (busybox.cfg.suid) - do not require SUID provileges (busybox.cfg.nosuid) Some setups prefer to build two busybox binaries, one that is suid which contains all applets that do or may require suid privileges, and a second one for all the rest (which drops suid). To ease splitting these two binaries, generate a list of CONFIG_ items for the suid binary. Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
* style fixes, no code changesDenys Vlasenko2012-09-021-1/+1
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* Fix one-applet build for tcpsvdDenys Vlasenko2012-03-191-8/+1
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* applet_tables: fix single applet build failure. Closes 4009Denys Vlasenko2011-09-161-1/+8
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* applets/install.sh: afer quoting of variablesDenys Vlasenko2011-04-051-35/+34
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* fix install.shDenys Vlasenko2011-04-041-6/+10
| | | | | Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* applet_tables: do not include libbb.h, that header ir for target buildsDenys Vlasenko2011-03-281-2/+8
| | | | | | ...and applets/applet_tables.c is built on *host*. Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* fix bit rot in scripts/Makefile.IMA #2Denys Vlasenko2011-03-061-0/+3
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* .gitignore: add missing ignoresBjørn Forsman2011-03-061-0/+1
| | | | | | | Ignore output files created by "make defconfig; make". Signed-off-by: Bjørn Forsman <bjorn.forsman@gmail.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* fix "make install"Bernd Jendrissek2011-02-201-1/+1
| | | | | Signed-off-by: Bernd Jendrissek <bernd.jendrissek@gmail.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* whitespace fixesDenys Vlasenko2011-02-031-2/+2
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* simpler check for odDenys Vlasenko2010-09-161-1/+2
| | | | Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
* build system: test that od is present in the host systemDenys Vlasenko2010-09-161-0/+6
| | | | Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
* *: make GNU licensing statement forms more regularDenys Vlasenko2010-08-166-6/+6
| | | | | | | This change retains "or later" state! No licensing _changes_ here, only form is adjusted (article, space between "GPL" and "v2" and so on). Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* *: fix "see file License ..." - the file is named LICENSE (in uppercase)Denys Vlasenko2010-08-162-2/+2
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* make usage_compressed.h generation _always_ update mtimeDenys Vlasenko2010-07-081-5/+1
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* randomconfig fixesDenys Vlasenko2010-07-051-2/+0
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* Yet another attempt to stamp out "make -j" problemsDenys Vlasenko2010-07-041-1/+7
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* build system: do not rebuild ash and hush on any change to any .c fileDenys Vlasenko2010-06-262-3/+23
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* remove defconfig. Now "make defconfig" simply uses defaults from Config.inDenys Vlasenko2010-06-061-1/+1
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* make it possible to have include/applets.h-esque entries in .c filesDenys Vlasenko2010-06-061-3/+3
| | | | | | As an example, bunzip2 and bzcat is changed to use it. Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* Remove requirement that include/applets.h must be sortedDenys Vlasenko2010-06-053-37/+75
| | | | | | | | First, I _again_ violated it - two xz-related applets are in wrong positions. Second, planned in-applet help text thing will be so much easier without this requirement... Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* mass renaming Kbuild -> Kbuild.src, Config.in -> Config.srcDenys Vlasenko2010-06-041-0/+0
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* ash,hush: make it possible to build them individuallyDenys Vlasenko2010-03-231-2/+4
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* whitespace fixesDenys Vlasenko2010-01-251-3/+3
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* build system: more fixes to parallel buildDenys Vlasenko2009-11-251-3/+0
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* build system: fix parallel makeDenys Vlasenko2009-11-241-0/+3
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* applets/usage_compressed: combine many seds in one; hide dd statsBernhard Reutner-Fischer2009-10-271-7/+8
| | | | | Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* mkfs_ext2: use compatible inode sizes; add -I <inodesize>. (by Vladimir)Denys Vlasenko2009-10-221-3/+3
| | | | | | | | | | function old new delta mkfs_ext2_main 2385 2495 +110 packed_usage 26400 26447 +47 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 2/0 up/down: 157/0) Total: 157 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>