Lock $dirty to fix for Issue#388
authorjdong7 <junfeng.dong@intel.com>
Fri, 21 Sep 2012 02:54:18 +0000 (10:54 +0800)
committerZhang Qiang <qiang.z.zhang@intel.com>
Fri, 21 Sep 2012 12:32:07 +0000 (20:32 +0800)
Change-Id: Ic01d2469c5d50d07dd2988e004711822371b7b9f

depanneur

index ea00e2b61c0da7b5801efec1d2b2070c53fbebe1..e1a7709eb8eeb96639e622ca4ba1b0bf3db586ff 100755 (executable)
--- a/depanneur
+++ b/depanneur
@@ -1075,30 +1075,32 @@ while (! $TERM) {
     my @order = ();
     my @o = ();
 
-    if ($dirty) {
-        update_pkgdeps();
-        $dirty = 0;
-    }
-
-    foreach my $name (keys %to_build) {
-        if( ! (grep $_ eq $name, @done) && 
-            ! (grep $_ eq $name, @skipped) &&
-            ! (grep $_ eq $name, @running))
-        {
-            next if (! exists $pkgdeps{$name});
-            my @bdeps = @{$pkgdeps{$name}};
-            my $add = 1;
-            foreach my $depp (@bdeps) {
-                if ((! grep($_ eq $depp, @skipped)) &&
-                    (! grep($_ eq $depp, @expansion_errors)) &&
-                    (! grep($_ eq $depp, @done))) {
-                    debug("not adding $name, since it depends on $depp");
-                    $add = 0;
-                    last;
+    {
+        lock($DETACHING);
+        if ($dirty) {
+            update_pkgdeps();
+            $dirty = 0;
+        }
+        foreach my $name (keys %to_build) {
+            if( ! (grep $_ eq $name, @done) &&
+                ! (grep $_ eq $name, @skipped) &&
+                ! (grep $_ eq $name, @running))
+            {
+                next if (! exists $pkgdeps{$name});
+                my @bdeps = @{$pkgdeps{$name}};
+                my $add = 1;
+                foreach my $depp (@bdeps) {
+                    if ((! grep($_ eq $depp, @skipped)) &&
+                        (! grep($_ eq $depp, @expansion_errors)) &&
+                        (! grep($_ eq $depp, @done))) {
+                        debug("not adding $name, since it depends on $depp");
+                        $add = 0;
+                        last;
+                    }
+                }
+                if ($add == 1 ) {
+                    push(@order, $name);
                 }
-            }
-            if ($add == 1 ) {
-                push(@order, $name);
             }
         }
     }