diff options
| -rw-r--r-- | bitbake/lib/bb/runqueue.py | 61 |
1 files changed, 42 insertions, 19 deletions
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py index 3bcbaee12a..a1e3285821 100644 --- a/bitbake/lib/bb/runqueue.py +++ b/bitbake/lib/bb/runqueue.py | |||
| @@ -1746,9 +1746,9 @@ class RunQueueExecute: | |||
| 1746 | bb.fatal("Invalid scheduler '%s'. Available schedulers: %s" % | 1746 | bb.fatal("Invalid scheduler '%s'. Available schedulers: %s" % |
| 1747 | (self.scheduler, ", ".join(obj.name for obj in schedulers))) | 1747 | (self.scheduler, ", ".join(obj.name for obj in schedulers))) |
| 1748 | 1748 | ||
| 1749 | if len(self.rqdata.runq_setscene_tids) > 0: | 1749 | #if len(self.rqdata.runq_setscene_tids) > 0: |
| 1750 | self.sqdata = SQData() | 1750 | self.sqdata = SQData() |
| 1751 | build_scenequeue_data(self.sqdata, self.rqdata, self.rq, self.cooker, self.stampcache, self) | 1751 | build_scenequeue_data(self.sqdata, self.rqdata, self.rq, self.cooker, self.stampcache, self) |
| 1752 | 1752 | ||
| 1753 | def runqueue_process_waitpid(self, task, status): | 1753 | def runqueue_process_waitpid(self, task, status): |
| 1754 | 1754 | ||
| @@ -1901,6 +1901,35 @@ class RunQueueExecute: | |||
| 1901 | self.stats.taskSkipped() | 1901 | self.stats.taskSkipped() |
| 1902 | self.stats.taskCompleted() | 1902 | self.stats.taskCompleted() |
| 1903 | 1903 | ||
| 1904 | def summarise_scenequeue_errors(self): | ||
| 1905 | err = False | ||
| 1906 | if not self.sqdone: | ||
| 1907 | logger.debug(1, 'We could skip tasks %s', "\n".join(sorted(self.scenequeue_covered))) | ||
| 1908 | completeevent = sceneQueueComplete(self.sq_stats, self.rq) | ||
| 1909 | bb.event.fire(completeevent, self.cfgData) | ||
| 1910 | if self.sq_deferred: | ||
| 1911 | logger.error("Scenequeue had deferred entries: %s" % pprint.pformat(self.sq_deferred)) | ||
| 1912 | err = True | ||
| 1913 | if self.changed_setscene: | ||
| 1914 | logger.error("Scenequeue had unprocessed changed entries: %s" % pprint.pformat(self.changed_setscene)) | ||
| 1915 | err = True | ||
| 1916 | if self.holdoff_tasks: | ||
| 1917 | logger.error("Scenequeue had holdoff tasks: %s" % pprint.pformat(self.holdoff_tasks)) | ||
| 1918 | err = True | ||
| 1919 | |||
| 1920 | for x in self.rqdata.runtaskentries: | ||
| 1921 | if x not in self.tasks_covered and x not in self.tasks_notcovered: | ||
| 1922 | logger.error("Task %s was never moved from the setscene queue" % x) | ||
| 1923 | err = True | ||
| 1924 | if x not in self.tasks_scenequeue_done: | ||
| 1925 | logger.error("Task %s was never processed by the setscene code" % x) | ||
| 1926 | err = True | ||
| 1927 | if len(self.rqdata.runtaskentries[x].depends) == 0 and x not in self.runq_buildable: | ||
| 1928 | logger.error("Task %s was never marked as buildable by the setscene code" % x) | ||
| 1929 | err = True | ||
| 1930 | return err | ||
| 1931 | |||
| 1932 | |||
| 1904 | def execute(self): | 1933 | def execute(self): |
| 1905 | """ | 1934 | """ |
| 1906 | Run the tasks in a queue prepared by prepare_runqueue | 1935 | Run the tasks in a queue prepared by prepare_runqueue |
| @@ -1996,22 +2025,8 @@ class RunQueueExecute: | |||
| 1996 | 2025 | ||
| 1997 | if not self.sq_live and not self.sqdone and not self.sq_deferred and not self.changed_setscene and not self.holdoff_tasks: | 2026 | if not self.sq_live and not self.sqdone and not self.sq_deferred and not self.changed_setscene and not self.holdoff_tasks: |
| 1998 | logger.info("Setscene tasks completed") | 2027 | logger.info("Setscene tasks completed") |
| 1999 | logger.debug(1, 'We could skip tasks %s', "\n".join(sorted(self.scenequeue_covered))) | ||
| 2000 | 2028 | ||
| 2001 | completeevent = sceneQueueComplete(self.sq_stats, self.rq) | 2029 | err = self.summarise_scenequeue_errors() |
| 2002 | bb.event.fire(completeevent, self.cfgData) | ||
| 2003 | |||
| 2004 | err = False | ||
| 2005 | for x in self.rqdata.runtaskentries: | ||
| 2006 | if x not in self.tasks_covered and x not in self.tasks_notcovered: | ||
| 2007 | logger.error("Task %s was never moved from the setscene queue" % x) | ||
| 2008 | err = True | ||
| 2009 | if x not in self.tasks_scenequeue_done: | ||
| 2010 | logger.error("Task %s was never processed by the setscene code" % x) | ||
| 2011 | err = True | ||
| 2012 | if len(self.rqdata.runtaskentries[x].depends) == 0 and x not in self.runq_buildable: | ||
| 2013 | logger.error("Task %s was never marked as buildable by the setscene code" % x) | ||
| 2014 | err = True | ||
| 2015 | if err: | 2030 | if err: |
| 2016 | self.rq.state = runQueueFailed | 2031 | self.rq.state = runQueueFailed |
| 2017 | return True | 2032 | return True |
| @@ -2107,14 +2122,22 @@ class RunQueueExecute: | |||
| 2107 | return True | 2122 | return True |
| 2108 | 2123 | ||
| 2109 | # Sanity Checks | 2124 | # Sanity Checks |
| 2125 | err = self.summarise_scenequeue_errors() | ||
| 2110 | for task in self.rqdata.runtaskentries: | 2126 | for task in self.rqdata.runtaskentries: |
| 2111 | if task not in self.runq_buildable: | 2127 | if task not in self.runq_buildable: |
| 2112 | logger.error("Task %s never buildable!", task) | 2128 | logger.error("Task %s never buildable!", task) |
| 2129 | err = True | ||
| 2113 | elif task not in self.runq_running: | 2130 | elif task not in self.runq_running: |
| 2114 | logger.error("Task %s never ran!", task) | 2131 | logger.error("Task %s never ran!", task) |
| 2132 | err = True | ||
| 2115 | elif task not in self.runq_complete: | 2133 | elif task not in self.runq_complete: |
| 2116 | logger.error("Task %s never completed!", task) | 2134 | logger.error("Task %s never completed!", task) |
| 2117 | self.rq.state = runQueueComplete | 2135 | err = True |
| 2136 | |||
| 2137 | if err: | ||
| 2138 | self.rq.state = runQueueFailed | ||
| 2139 | else: | ||
| 2140 | self.rq.state = runQueueComplete | ||
| 2118 | 2141 | ||
| 2119 | return True | 2142 | return True |
| 2120 | 2143 | ||
