Add --fail-fast option 17/47817/1
authorSoonKyu Park <sk7.park@samsung.com>
Wed, 9 Sep 2015 06:34:45 +0000 (15:34 +0900)
committerSoonKyu Park <sk7.park@samsung.com>
Wed, 9 Sep 2015 06:34:45 +0000 (15:34 +0900)
Change-Id: I7ae746caf649045571d5c2ca1498572204273bc8

depanneur

index 244998a..b34935c 100755 (executable)
--- a/depanneur
+++ b/depanneur
@@ -96,6 +96,7 @@ my $deps_build = 0;             # build all packages specified packaged depend o
 my $dryrun = 0;                 # just show build order and don't build actually
 my $help = 0;                   # show help information
 my $keepgoing = 0;              # TODO: clean up
+my $fail_fast = 0;             # stop build immediately if one of packages fails
 my $clean_repos = 0;            # clean corresponding local rpm repos
 my $create_baselibs = 0;        # create baselibs packages if baselibs.conf exists
 my $skip_srcrpm = 0;            # don't generate source rpm package if $skip_srcrpm == 1
@@ -189,6 +190,7 @@ GetOptions (
     "dryrun" => \$dryrun,
     "help|?" => \$help,
     "keepgoing" => \$keepgoing,
+    "fail-fast" => \$fail_fast,
     "overwrite" => \$overwrite,
     "debug" => \$debug,
     "incremental" => \$incremental,
@@ -242,6 +244,9 @@ Available options:
       If a package build fails, do not abort and continue
       building other packages in the queue.
 
+    --fail-fast
+      If one of packages build fails, stop whole build immediately.
+
     --incremental
       Build a package from the local git tree directly.
       This option does not produce packages now, it is very
@@ -1497,7 +1502,11 @@ sub worker_thread {
         if ($status == 0) {
             $dirty = 1;
         }
-    }
+        if ($fail_fast && $status == 1) {
+            info("build failed, exit...");
+            $TERM = 1;
+        }
+  }
 
     debug("*** build $name exit with status($status), is dirty:$dirty, (worker: $thread) ***");
     return $status;