We need to wait for all the hooks to finish running, so explicitly
create a subshell to actually run the hooks in instead of relying
on the while read loop to implicitly create one.
---
 pm/pm-functions.in |   38 ++++++++++++++++++++------------------
 1 files changed, 20 insertions(+), 18 deletions(-)

diff --git a/pm/pm-functions.in b/pm/pm-functions.in
index b101f97..f82d85c 100644
--- a/pm/pm-functions.in
+++ b/pm/pm-functions.in
@@ -183,27 +183,29 @@ run_some_hooks()
        local hook_coa="$2"
        local hook_order="$3"
        shift; shift; shift
-       get_${hook_coa}_hooks $hook_type $hook_order |while read base; do
-           if [ -f "$syshooks/$base" ]; then
-               hook="$syshooks/$base"
-           elif [ -f "$phooks/$base" ]; then
-               hook="$phooks/$base"
-           else
-               log "$base is not a hook at all!"
-               continue
-           fi
-           log -n "${hook} $@: "
-           hook_ok "$hook" && {
-               if [ "$hook_coa" = "core" ]; then
-                   "${hook}" "$@"
-                   hook_exit_status $?
+       get_${hook_coa}_hooks $hook_type $hook_order | (
+           while read base; do
+               if [ -f "$syshooks/$base" ]; then
+                   hook="$syshooks/$base"
+               elif [ -f "$phooks/$base" ]; then
+                   hook="$phooks/$base"
                else
-                   "${hook}" "$@" &
-                   echo "running in background."
+                   log "$base is not a hook at all!"
+                   continue
                fi
-           }
-       done
+               log -n "${hook} $@: "
+               hook_ok "$hook" && {
+                   if [ "$hook_coa" = "core" ]; then
+                       "${hook}" "$@"
+                       hook_exit_status $?
+                   else
+                       "${hook}" "$@" &
+                       echo "running in background."
+                   fi
+               }
+           done
        [ "$hook_coa" = "core" ] || wait
+       )
 }
            
 # Run all applicable hooks, logging success and failure as we go.
-- 
1.5.4.3

_______________________________________________
Pm-utils mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/pm-utils

Reply via email to