summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Alexander Steffens (heftig) <jan.steffens@gmail.com>2018-05-31 17:46:51 +0200
committerAllan McRae <allan@archlinux.org>2018-06-18 13:15:51 +1000
commit05a3641c76ba1c07dbec6fa1d9e9d3fcf6dec20c (patch)
treef62dd588636c39ca68669fd5c54af41846cf0d40
parentab1e92860bdc5388621e8314b8e1652590fa2b05 (diff)
downloadpacman-05a3641c76ba1c07dbec6fa1d9e9d3fcf6dec20c.tar.xz
makepkg: Don't use parameterless return
It's especially dangerous in trap handlers since the return value of the function becomes the return value of the last command before the trap, not the last command in the current function. This applies to any function executed in a trap handler, nested functions included. In one case, install_packages failed (via return 14), which was inside a conditional that then ran exit 14, which triggered the EXIT handler, which called clean_up, which called remove_deps, which had !RMDEPS and thus returned. The return value of remove_deps became the return value of install_packages, triggering the ERR handler, which (due to another problem) was still the user function handler, which then printed a misleading error message and overrode the exit code with 4. Signed-off-by: Allan McRae <allan@archlinux.org>
-rw-r--r--scripts/makepkg.sh.in14
1 files changed, 7 insertions, 7 deletions
diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index 43ccb121..9918ee7e 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -133,7 +133,7 @@ clean_up() {
if (( INFAKEROOT )); then
# Don't clean up when leaving fakeroot, we're not done yet.
- return
+ return 0
fi
if (( (EXIT_CODE == E_OK || EXIT_CODE == E_INSTALL_FAILED) && CLEANUP )); then
@@ -313,7 +313,7 @@ resolve_deps() {
}
remove_deps() {
- (( ! RMDEPS )) && return
+ (( ! RMDEPS )) && return 0
# check for packages removed during dependency install (e.g. due to conflicts)
# removing all installed packages is risky in this case
@@ -519,7 +519,7 @@ find_libdepends() {
if (( sodepends == 0 )); then
(( ${#depends[@]} )) && printf '%s\n' "${depends[@]}"
- return;
+ return 0
fi
local libdeps filename soarch sofile soname soversion;
@@ -721,7 +721,7 @@ list_package_files() {
}
create_package() {
- (( NOARCHIVE )) && return
+ (( NOARCHIVE )) && return 0
if [[ ! -d $pkgdir ]]; then
error "$(gettext "Missing %s directory.")" "\$pkgdir/"
@@ -784,14 +784,14 @@ create_package() {
create_debug_package() {
# check if a debug package was requested
if ! check_option "debug" "y" || ! check_option "strip" "y"; then
- return
+ return 0
fi
pkgdir="$pkgdirbase/$pkgbase-@DEBUGSUFFIX@"
# check if we have any debug symbols to package
if dir_is_empty "$pkgdir/usr/lib/debug"; then
- return
+ return 0
fi
unset groups depends optdepends provides conflicts replaces backup install changelog
@@ -875,7 +875,7 @@ create_srcpackage() {
}
install_package() {
- (( ! INSTALL )) && return
+ (( ! INSTALL )) && return 0
if (( ! SPLITPKG )); then
msg "$(gettext "Installing package %s with %s...")" "$pkgname" "$PACMAN -U"