aboutsummaryrefslogtreecommitdiffstats
path: root/package/base-files/files/lib/functions.sh
Commit message (Collapse)AuthorAgeFilesLines
* base-files: move xor() from caldata extraction to functions.shAdrian Schmutzler2019-10-131-0/+16
| | | | | | | | The xor() function is defined in each of the caldata extraction scripts for several targets. Move it to functions.sh to reduce duplicate code. Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
* base-files: apply new sysctl.conf at postinstYousong Zhou2019-06-211-13/+20
| | | | | | | | | | | | | | | | This is mainly for kmod-br-netfilter. To turn off bridge-netfilter-call-xxx immediately after installation While at it - Define filelist="/usr/lib/opkg/info/${pkgname}.list" - Reuse "[ -z "$root" ]" - Grep with "-m1" Fixes FS#2300 Reported-by: Marco Sartorius <tidbits@ormoorgmen.info> Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
* base-files: config_get: prevent filename globbingGünther Kelleter2019-01-301-1/+1
| | | | | | | | | When config_get is called as "config_get section option" the option is unexpectedly globbed by the shell which differs from the way options are read to a variable with "config_get variable section option". Add another layer of double quotes to fix it. Signed-off-by: Günther Kelleter <guenther.kelleter@devolo.de>
* base-files: fix prerm return value, align with postinst codeTony Ambardar2018-11-291-5/+10
| | | | | | | | | | | | | | | The return value of a package prerm script is discarded and not returned correctly by default_prerm(). This allows other operations like service shutdown to "leak" their return value, prompting workarounds like commit 48cfc826 which do not address the root cause. Preserve a package prerm script return value for use by default_prerm(), sharing the corresponding code from default_postinst() for consistency. Also use consistent code for handling of /etc/init.d/ scripts. Run Tested on: LEDE 17.01.4 running ar71xx. Signed-off-by: Tony Ambardar <itugrok@yahoo.com>
* base-files: fix postinstall uci-defaults removalTony Ambardar2018-09-241-4/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit 7f694582 introduced a bug where default_postinst() often fails to remove a uci-defaults script after application, leaving it to run again after a reboot. (Note: commit 7f694582 also introduced FS#1021, now fixed by 73c745f6) The subtle problem arises from the shell logical chain: [ -f "$i" ] && . "$i" && rm -f "$i" Most uci-defaults scripts contain a terminal 'exit 0' statement which, when sourced, results in the logic chain exiting before executing 'rm -f'. This was observed while testing upgrades of 'luci-app-sqm'. The solution is to wrap the shell sourcing in a subshell relative to the command 'rm -f': ( [ -f "$i" ] && . "$i" ) && rm -f "$i" Revert to using 'grep' to prefilter the list of entries from the control file, which yields the full path of uci-defaults scripts. This allows keeping the existence check, directory change and script sourcing inside the subshell, with the script removal correctly outside. This approach avoids adding a second subshell only around the "." (source) command. The change also preserves the fix FS#1021, since the full path is used to source the script, which is POSIX-portable irrespective of PATH variable or reference to the CWD. Run Tested on: LEDE 17.01.4 running ar71xx, while tracing installation of package luci-app-sqm with its associated /etc/uci-defaults/luci-sqm file. Signed-off-by: Tony Ambardar <itugrok@yahoo.com>
* base-files: fix UCI config parsing and callback handlingTony Ambardar2018-06-061-8/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There are several long-standing issues present in the UCI shell API as documented in https://wiki.openwrt.org/doc/devel/config-scripting. They relate both to high-level, user-defined callback functions used to process UCI config files, and also to low-level functions used within scripts generally. The related problems have been encountered now and in the past, e.g. https://forum.openwrt.org/viewtopic.php?id=54295, and include: a) UCI parsing option() function and user-defined option_cb() callbacks being erroneously called during processing of "list" config file entries; b) normal usage of the low-level config_set() unexpectedy calling any defined option_cb() if present; and c) handling of the list_cb() not respecting the NO_CALLBACK variable. Root causes include a function stack "inversion", where the low-level config_set() function incorrectly calls the high-level option() function, intended only for processing the "option" keyword of UCI config files. This change addresses the inversion and other issues, making the option handling code more consistent and smaller, and simplifying developers' usage of UCI callbacks. Signed-off-by: Tony Ambardar <itugrok@yahoo.com> Signed-off-by: Hans Dedecker <dedeckeh@gmail.com> [PKG_RELEASE increase]
* base-files: /lib/functions.sh: remove unused insert_modulesMatthias Schiffer2018-04-171-10/+0
| | | | | | insert_modules has been unused since r5279. Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
* base-files: fix getting gid from group_add_nextYousong Zhou2017-11-091-7/+6
| | | | | | | | | | | | Shell function return code only has range [0, 255]. Other values will be truncated, e.g. return 65536 will have the same effect as return 0 While at it, drop other "return $rc" where rc will almost always take value 0 and whose value current callers actually do not check Fixes FS#988 Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
* functions.sh: fix default_postinst functionMarko Ratkaj2017-11-081-1/+1
| | | | | | | | | | | | | | | | | | When we run "opkg install" on a package that installs an uci-defaults script, functions.sh will fail to evaluate that script in its default_postinst function. This happens because there is no "./" present and it searches for the file in paths specified by the PATH variable. This would work on bash, but it will not work on ash and some other shells like sh, zsh. This applys to the ". filename" directive used in this case. This patch will make the path relative to the /etc/uci-defaults directory. Fixes: FS#1021 Signed-off-by: Marko Ratkaj <marko.ratkaj@sartura.hr>
* include: kernel.mk: simplify module autoloadingJo-Philipp Wich2017-11-071-0/+4
| | | | | | | | | | | | | | | | | | Let the generic postinstall script invoke "kmodloader" when the just installed package contains any /etc/module.d/ entries. This allows us to skip the explicit "insert_module()" calls in the package postinstall. Due to the removed insert_module calls we do not need to assemble a complete list of modules per package anymore, which allows for vast simplification of the package generation code. While we're at it, also support specifying default parameters for modules using either the MODPARAM or MODPARAM.modulename variables in KernelPackage. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
* base-files: allocate uid/gid starting from 65536Yousong Zhou2017-06-181-4/+4
| | | | | | | | | | | There already exist static assignment of uid/gid 65533 in packages feed and we have nobody/nogroup taking 65534 as their ids. Let's change the pid of dynamic assignment to start from 65536 so that the two assignment scheme will not collide with each other While at it, fix the scan command checking existence of uid/gid Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
* base-files: add generic board_name function to functions.shFelix Fietkau2017-03-221-0/+4
| | | | | | | This will be used to replace all those nasty board specific scripts that do basically the same thing Signed-off-by: Felix Fietkau <nbd@nbd.name>
* base-files: add support for overlaying rootfs contentRafał Miłecki2016-12-201-0/+5
| | | | | | | | | This adds support for install-overlay define. When used in package it allows installing files to a special directory that gets copied to the root when installing it. It allows overwriting files provided by other packages. Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
* base-files: ignore failure of stopping services on removalJonas Gorski2016-11-211-1/+1
| | | | | | | | | Packages that do a killall <cmd> with the same name as the init script will fail the prerm step when the service isn't running. Do make them removable without having to restart the service, ignore the return code. Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com> Acked-by: Jo-Philipp Wich <jo@mein.io>
* base-files: don't modify enabled state of service on upgradeJonas Gorski2016-11-211-10/+12
| | | | | | | | Properly stop/start services on upgrade, but don't change the enabled state. Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com> Acked-by: Jo-Philipp Wich <jo@mein.io>
* base-files: make default_prerm work offlineMatthias Schiffer2016-09-261-4/+12
| | | | | | | IPKG_INSTROOT must be respected for offline removal (used for per-device rootfs). Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
* base-files: rework postinstall uci-defaults handlingJo-Philipp Wich2016-05-271-5/+4
| | | | | | | | | | | | | | | Some package postinstall operations, e.g. those emitted by the LuCI build system, source and delete the uci-defaults themselves upon package insteall, causing the generic defaults apply code to trigger shell errors like: .../luci-app-ddns.postinst: .: line 130: can't open './40_luci-ddns' Rework the generic apply code to check the existence of the uci-defaults script before trying to source it, use sed to prefilter the list of entries from the control file and perform the directory change in a subshell, avoiding the need for cd $OLDPWD. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
* base-files: evaluate uci-defaults on run-time installationsDaniel Golle2016-05-041-0/+11
| | | | | | | | | | | | Packages may install scripts into /etc/uci-defaults to be executed once after installation, usually at the first boot of the target. This works fine if the package was installed to the rootfs during build or using the ImageBuilder. If the package is installed using opkg during run-time uci-defaults were applied only after a reboot of the device. Avoid the need to reboot by evaluting the package's uci-defaults in default-postinst. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* base-files: split user/group addition code into a functionJohn Crispin2016-04-291-4/+10
| | | | Signed-off-by: John Crispin <john@phrozen.org>
* base-files: refactor default_postinst()Jo-Philipp Wich2015-09-161-51/+50
| | | | | | | | | | | | - Simplify user spec parsing code - Alias IPKG_INSTROOT to shorten code - Quote variables where appropriate - Remove a useless-use-of-cat instance - Suppress errors in case control or list files are missing Signed-off-by: Jo-Philipp Wich <jow@openwrt.org> SVN-Revision: 46975
* base-files: default_postinst: propagate the real postinst return codeJohn Crispin2015-08-171-3/+7
| | | | | | | | | | | Using the postinst script for sanity checks and expecting opkg to fail if the postinst didn't return 0 was possible in Barrier Breaker, propagate the real postinst return code through default_postinst to restore this behaviour. Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net> SVN-Revision: 46653
* base-files: fix default pre-/postrm for packages with a dotJonas Gorski2015-05-191-2/+2
| | | | | | | | | | | | | Instead of stripping everything after the first dot, strip everything after the last dot. This fixes pre-/postrm actions for packages with a dot in their name, like libusb-1.0. Fixes #19668. Signed-off-by: Jonas Gorski <jogo@openwrt.org> SVN-Revision: 45702
* modules: fix postinst generation for kernel modulesJohn Crispin2015-04-101-4/+7
| | | | | | | | | Fixes ticket #19352. Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com> Signed-off-by: John Crispin <blogic@openwrt.org> SVN-Revision: 45367
* base-files: default_postinst() fix variable colisionJohn Crispin2015-02-041-15/+15
| | | | | | | | | | | | | The name variable contains at first the package name, and after the last group name. This patch fixes /etc/rc.d symlink creation (at least). Change name in pkgname, change the other name in ugname (user group name), and id in ugid (user group id) Signed-off-by: Etienne CHAMPETIER <champetier.etienne@gmail.com> SVN-Revision: 44253
* base-files: default_postinst() - create user:group first (resend)John Crispin2014-12-011-2/+4
| | | | | | | | | create user:group before running postinst-pkg. the postinst hook might require the user:group to already exist. Signed-off-by: Christian Schoenebeck <christian.schoenebeck@gmail.com> SVN-Revision: 43472
* default_postinst() fix wrong call of group_addJohn Crispin2014-10-151-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | | [base-files] default_postinst() fix wrong call of group_add after 12bae65d07d29854204715cebc1ef1eae237fd9b group_add is always called. shell scripting can be tricky... wrong call: [ -n "$gid" ] && group_exists $name || group_add $name $gid this leads to a call of 'group_add' when $gid is emtpy, proof: root@box:~ functionA() { echo A; } root@box:~ functionB() { echo B; } root@box:~ VAR= root@box:~ [ -n "$VAR" ] && functionA || functionB B root@box:~ # functionB was called, but VAR is not filled root@box:~ VAR=filled root@box:~ [ -n "$VAR" ] && functionA || functionB A Signed-off-by: Bastian Bittorf <bittorf@bluebottle.com> SVN-Revision: 42926
* base-files: default_postinst() force clear luci-indexcacheJohn Crispin2014-10-141-0/+1
| | | | | | | | | | Inside every LuCI package you need to clear luci-indexcache and sometimes when installing non LuCI pacakges it's also needed to clear it. Easier put it into default_postinst(). Signed-off-by: Christian Schoenebeck <christian.schoenebeck@gmail.com> SVN-Revision: 42923
* base-files: the USERID code path did not check for duplicate groupsJohn Crispin2014-10-141-1/+1
| | | | | | Signed-off-by: John Crispin <blogic@openwrt.org> SVN-Revision: 42919
* base-files: extend USERID:=syntaxJohn Crispin2014-10-081-8/+20
| | | | | | | | | | it is now possible to inlie the uid and gid in the syntax USERID:=username=uid:group=gid:group2=gid2:... Signed-off-by: John Crispin <blogic@openwrt.org> SVN-Revision: 42838
* base-files: make postinst script run inside a subshellJohn Crispin2014-10-061-1/+1
| | | | | | Signed-off-by: John Crispin <blogic@openwrt.org> SVN-Revision: 42800
* postinst trigger: the new postinst trigger broke IBJohn Crispin2014-09-161-3/+6
| | | | | | Signed-off-by: John Crispin <blogic@openwrt.org> SVN-Revision: 42571
* ipkg: add a default postinst/prerm scriptJohn Crispin2014-09-111-1/+76
| | | | | | | | | | | the postinst script enables/starts the init.d scripts upon package installation and installs the users required by the package. the prerm script stops and disables the init.d scripts. Signed-off-by: John Crispin <blogic@openwrt.org> SVN-Revision: 42470
* base-files: define yes/no as valid boolean optionsLuka Perkov2014-06-291-2/+2
| | | | | | | | | ubox validate_data defines yes/no as valid boolean options, do the same in config_get_bool too. Signed-off-by: Luka Perkov <luka@openwrt.org> SVN-Revision: 41405
* base-files: add back missing function for find_mtd_part to /lib/functions.sh ↵Felix Fietkau2014-04-081-0/+7
| | | | | | | | (fixes #15496) Signed-off-by: Felix Fietkau <nbd@openwrt.org> SVN-Revision: 40426
* /lib/functions.sh: remove config_rename()Felix Fietkau2014-04-071-18/+0
| | | | | | Signed-off-by: Felix Fietkau <nbd@openwrt.org> SVN-Revision: 40412
* /lib/functions.sh: move rarely used mtd and macaddr related functions to ↵Felix Fietkau2014-04-071-137/+0
| | | | | | | | /lib/functions/system.sh Signed-off-by: Felix Fietkau <nbd@openwrt.org> SVN-Revision: 40411
* /lib/functions.sh: remove jffs2_mark_erase()Felix Fietkau2014-04-071-9/+0
| | | | | | Signed-off-by: Felix Fietkau <nbd@openwrt.org> SVN-Revision: 40410
* base-files: remove config_clear() and list_remove()Felix Fietkau2014-04-071-28/+0
| | | | | | Signed-off-by: Felix Fietkau <nbd@openwrt.org> SVN-Revision: 40409
* base-files: move uci_apply_defaults() to /etc/init.d/bootFelix Fietkau2014-04-071-11/+0
| | | | | | Signed-off-by: Felix Fietkau <nbd@openwrt.org> SVN-Revision: 40408
* /lib/functions.sh: remove hotplug_dev()Felix Fietkau2014-04-071-4/+0
| | | | | | Signed-off-by: Felix Fietkau <nbd@openwrt.org> SVN-Revision: 40406
* /lib/functions.sh: remove strtok()Felix Fietkau2014-04-071-26/+0
| | | | | | Signed-off-by: Felix Fietkau <nbd@openwrt.org> SVN-Revision: 40405
* /lib/functions.sh: move preinit related functions to /lib/functions/preinit.shFelix Fietkau2014-04-071-85/+0
| | | | | | Signed-off-by: Felix Fietkau <nbd@openwrt.org> SVN-Revision: 40404
* /lib/functions.sh: remove pi_include()Felix Fietkau2014-04-071-24/+0
| | | | | | Signed-off-by: Felix Fietkau <nbd@openwrt.org> SVN-Revision: 40403
* /lib/functions.sh: remove jffs2_ready()Felix Fietkau2014-04-071-7/+0
| | | | | | Signed-off-by: Felix Fietkau <nbd@openwrt.org> SVN-Revision: 40402
* /lib/functions.sh: remove support for non-overlayfs overlay fopivot typesFelix Fietkau2014-04-071-44/+2
| | | | | | Signed-off-by: Felix Fietkau <nbd@openwrt.org> SVN-Revision: 40401
* base-files: fix mount-utils incompatibilityJohn Crispin2013-12-271-11/+11
| | | | | | Signed-off-by: Toke Høiland-Jørgensen <toke@toke.dk> SVN-Revision: 39169
* base-files: allow users to delect debug level during bootJohn Crispin2013-11-251-0/+20
| | | | | | Signed-off-by: John Crispin <blogic@openwrt.org> SVN-Revision: 38909
* base-files: add macaddr_canonicalize helper functionGabor Juhos2013-11-141-1/+34
| | | | | | | | | | | | | | | | | | | | | | | | In commit r38690, the MAC address canonicalization has been converted to use 'tr' instead of 'printf'. This only works if with MAC addresses which uses the 'xx:xx:xx:xx:xx:xx' format. However on some boards, the MAC addresses are stored in different format in the mtd partition. Some vendors are using hyphens or dots as separators instead of colons. Also the leading zeroes may be missing from the individual octets or those are replaced with spaces. Add a new function which can be used to convert these into the 'xx:xx:xx:xx:xx:xx' format. Also update the 'mtd_get_mac_ascii' function to use the new helper. The helper function is based on this code: http://isquared.nl/blog/2010/08/11/Bash-function-to-canonicalize-MAC-addresses/ Signed-off-by: Gabor Juhos <juhosg@openwrt.org> SVN-Revision: 38803
* base-files: mtd_get_mac_ascii bugfixGabor Juhos2013-11-081-4/+3
| | | | | | | | | | | | | | | | The mtd_get_mac_ascii utility function was broken. This fixes it. - Remove the superfluous include of /lib/functions.sh. The function is already in that file so it is pointless, - only use a variable if the whole key word matches, - don't try to process the MAC address if it is empty, - use 'tr' to canonicalize the MAC address, Signed-off-by: Daniel Gimpelevich <daniel@gimpelevich.san-francisco.ca.us> [juhosg: add more fixes, update commit message] Signed-off-by: Gabor Juhos <juhosg@openwrt.org> SVN-Revision: 38690
* base-files: add mtd_get_part_size helperGabor Juhos2013-07-201-0/+12
| | | | | | Signed-off-by: Gabor Juhos <juhosg@openwrt.org> SVN-Revision: 37475