Make -f (force) flag handling work properly
authorRichard Purdie <rpurdie@linux.intel.com>
Sun, 7 Jan 2007 17:48:58 +0000 (17:48 +0000)
committerRichard Purdie <rpurdie@linux.intel.com>
Sun, 7 Jan 2007 17:48:58 +0000 (17:48 +0000)
lib/bb/build.py
lib/bb/cooker.py
lib/bb/runqueue.py

index b1736ca..bf6b612 100644 (file)
@@ -256,9 +256,8 @@ def exec_task(task, d):
         raise EventException("Missing node in task graph", InvalidTask(task, d))
 
     # check whether this task needs executing..
-    if not data.getVarFlag(task, 'force', d):
-        if stamp_is_current(task, d):
-            return 1
+    if stamp_is_current(task, d):
+        return 1
 
     # follow digraph path up, then execute our way back down
     def execute(graph, item):
index 3e748f0..8a9c588 100644 (file)
@@ -79,8 +79,6 @@ class BBCooker:
         bb.event.fire(bb.event.PkgStarted(item, the_data))
         try:
             self.stats.attempt += 1
-            if self.configuration.force:
-                bb.data.setVarFlag('do_%s' % task, 'force', 1, the_data)
             if not build_depends:
                 bb.data.setVarFlag('do_%s' % task, 'dontrundeps', 1, the_data)
             if not self.configuration.dry_run:
@@ -113,7 +111,7 @@ class BBCooker:
 
         item = self.status.pkg_fn[fn]
 
-        if bb.build.stamp_is_current('do_%s' % self.configuration.cmd, the_data) and not self.configuration.force:
+        if bb.build.stamp_is_current('do_%s' % self.configuration.cmd, the_data):
             self.build_cache.append(fn)
             return True
 
@@ -402,11 +400,7 @@ class BBCooker:
         self.parseConfigurationFile( os.path.join( "conf", "bitbake.conf" ) )
 
         if not self.configuration.cmd:
-            self.configuration.cmd = bb.data.getVar("BB_DEFAULT_TASK", self.configuration.data)
-
-        # For backwards compatibility - REMOVE ME
-        if not self.configuration.cmd:
-            self.configuration.cmd = "build"
+            self.configuration.cmd = bb.data.getVar("BB_DEFAULT_TASK", self.configuration.data) or "build"
 
         #
         # Special updated configuration we use for firing events
@@ -449,6 +443,11 @@ class BBCooker:
 
             bbfile_data = bb.parse.handle(bf, self.configuration.data)
 
+            # Remove stamp for target if force mode active
+            if self.configuration.force:
+                bb.msg.note(2, bb.msg.domain.RunQueue, "Remove stamp %s, %s" % (self.configuration.cmd, bf))
+                bb.build.del_stamp('do_%s' % self.configuration.cmd, bbfile_data)
+
             item = bb.data.getVar('PN', bbfile_data, 1)
             try:
                 self.tryBuildPackage(bf, item, self.configuration.cmd, bbfile_data, True)
index e001e12..6063328 100644 (file)
@@ -199,13 +199,21 @@ class RunQueue:
 
         for target in targets:
             targetid = taskData.getbuild_id(target[0])
-            if targetid in taskData.failed_deps:
-                continue
 
             if targetid not in taskData.build_targets:
                 continue
 
             fnid = taskData.build_targets[targetid][0]
+
+            # Remove stamps for targets if force mode active
+            if cooker.configuration.force:
+                fn = taskData.fn_index[fnid]
+                bb.msg.note(2, bb.msg.domain.RunQueue, "Remove stamp %s, %s" % (target[1], fn))
+                bb.build.del_stamp(target[1], dataCache, fn)
+
+            if targetid in taskData.failed_deps:
+                continue
+
             if fnid in taskData.failed_fnids:
                 continue
 
@@ -417,12 +425,10 @@ class RunQueue:
                     taskname = self.runq_task[task]
 
                     if bb.build.stamp_is_current(taskname, dataCache, fn):
-                        targetid = taskData.gettask_id(fn, taskname)
-                        if not (targetid in taskData.external_targets and cooker.configuration.force):
-                            bb.msg.debug(2, bb.msg.domain.RunQueue, "Stamp current task %s (%s)" % (task, self.get_user_idstring(task, taskData)))
-                            runq_running[task] = 1
-                            task_complete(self, task)
-                            continue
+                        bb.msg.debug(2, bb.msg.domain.RunQueue, "Stamp current task %s (%s)" % (task, self.get_user_idstring(task, taskData)))
+                        runq_running[task] = 1
+                        task_complete(self, task)
+                        continue
 
                     bb.msg.debug(1, bb.msg.domain.RunQueue, "Running task %s (%s)" % (task, self.get_user_idstring(task, taskData)))
                     try: