aboutsummaryrefslogtreecommitdiffstats
path: root/package/system/opkg
diff options
context:
space:
mode:
authorTony Ambardar <itugrok@yahoo.com>2018-03-02 19:32:24 -0800
committerJo-Philipp Wich <jo@mein.io>2019-01-22 07:22:59 +0100
commit484117b47830b6dcebcfc19177dad8fb460c7ebe (patch)
tree95594fd051dc8e561bca116a20d0ee601e8f760f /package/system/opkg
parente09592748c5c02ee34b75508e9d72e50a1e0920a (diff)
downloadupstream-484117b47830b6dcebcfc19177dad8fb460c7ebe.tar.gz
upstream-484117b47830b6dcebcfc19177dad8fb460c7ebe.tar.bz2
upstream-484117b47830b6dcebcfc19177dad8fb460c7ebe.zip
base-files: fix postinstall uci-defaults removal
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> (backported from 4097ab6a975902b170dd7f7ac6c8025e5f32ef8d)
Diffstat (limited to 'package/system/opkg')
0 files changed, 0 insertions, 0 deletions