summaryrefslogtreecommitdiffstats
path: root/bitbake-dev/lib
diff options
context:
space:
mode:
authorRichard Purdie <rpurdie@linux.intel.com>2009-07-29 14:33:14 +0100
committerRichard Purdie <rpurdie@linux.intel.com>2009-07-29 14:33:14 +0100
commit64b04685b6fd029f2f70f7017bfd51d26ccb0d11 (patch)
tree5d525e2b58e5a9b27ea3096a0047770446baaf29 /bitbake-dev/lib
parent231b5f67844da39949e04ae53557cea04aacffdd (diff)
downloadpoky-64b04685b6fd029f2f70f7017bfd51d26ccb0d11.tar.gz
bitbake: Add a --revisions-changed commandline option to indicate when floating srcrevs have changed
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
Diffstat (limited to 'bitbake-dev/lib')
-rw-r--r--bitbake-dev/lib/bb/command.py19
-rw-r--r--bitbake-dev/lib/bb/cooker.py6
-rw-r--r--bitbake-dev/lib/bb/fetch/__init__.py23
-rw-r--r--bitbake-dev/lib/bb/ui/knotty.py3
4 files changed, 50 insertions, 1 deletions
diff --git a/bitbake-dev/lib/bb/command.py b/bitbake-dev/lib/bb/command.py
index 9226a2772f..e7c3770ffc 100644
--- a/bitbake-dev/lib/bb/command.py
+++ b/bitbake-dev/lib/bb/command.py
@@ -233,6 +233,14 @@ class CommandsAsync:
233 command.finishAsyncCommand() 233 command.finishAsyncCommand()
234 parseFiles.needcache = True 234 parseFiles.needcache = True
235 235
236 def compareRevisions(self, command, params):
237 """
238 Parse the .bb files
239 """
240 command.cooker.compareRevisions()
241 command.finishAsyncCommand()
242 compareRevisions.needcache = True
243
236# 244#
237# Events 245# Events
238# 246#
@@ -251,3 +259,14 @@ class CookerCommandFailed(bb.event.Event):
251 def __init__(self, data, error): 259 def __init__(self, data, error):
252 bb.event.Event.__init__(self, data) 260 bb.event.Event.__init__(self, data)
253 self.error = error 261 self.error = error
262
263class CookerCommandSetExitCode(bb.event.Event):
264 """
265 Set the exit code for a cooker command
266 """
267 def __init__(self, data, exitcode):
268 bb.event.Event.__init__(self, data)
269 self.exitcode = int(exitcode)
270
271
272
diff --git a/bitbake-dev/lib/bb/cooker.py b/bitbake-dev/lib/bb/cooker.py
index bec6c3535c..b2b237b4c7 100644
--- a/bitbake-dev/lib/bb/cooker.py
+++ b/bitbake-dev/lib/bb/cooker.py
@@ -147,6 +147,8 @@ class BBCooker:
147 self.commandlineAction = ["showEnvironment", self.configuration.buildfile] 147 self.commandlineAction = ["showEnvironment", self.configuration.buildfile]
148 elif self.configuration.buildfile is not None: 148 elif self.configuration.buildfile is not None:
149 self.commandlineAction = ["buildFile", self.configuration.buildfile, self.configuration.cmd] 149 self.commandlineAction = ["buildFile", self.configuration.buildfile, self.configuration.cmd]
150 elif self.configuration.revisions_changed:
151 self.commandlineAction = ["compareRevisions"]
150 elif self.configuration.show_versions: 152 elif self.configuration.show_versions:
151 self.commandlineAction = ["showVersions"] 153 self.commandlineAction = ["showVersions"]
152 elif self.configuration.parse_only: 154 elif self.configuration.parse_only:
@@ -241,6 +243,10 @@ class BBCooker:
241 243
242 bb.msg.plain("%-35s %25s %25s" % (p, lateststr, prefstr)) 244 bb.msg.plain("%-35s %25s %25s" % (p, lateststr, prefstr))
243 245
246 def compareRevisions(self):
247 ret = bb.fetch.fetcher_compare_revisons(self.configuration.data)
248 bb.event.fire(bb.command.CookerCommandSetExitCode(self.configuration.event_data, ret))
249
244 def showEnvironment(self, buildfile = None, pkgs_to_build = []): 250 def showEnvironment(self, buildfile = None, pkgs_to_build = []):
245 """ 251 """
246 Show the outer or per-package environment 252 Show the outer or per-package environment
diff --git a/bitbake-dev/lib/bb/fetch/__init__.py b/bitbake-dev/lib/bb/fetch/__init__.py
index 39a577b2eb..8ddcd38706 100644
--- a/bitbake-dev/lib/bb/fetch/__init__.py
+++ b/bitbake-dev/lib/bb/fetch/__init__.py
@@ -91,13 +91,34 @@ def fetcher_init(d):
91 bb.msg.debug(1, bb.msg.domain.Fetcher, "Keeping SRCREV cache due to cache policy of: %s" % srcrev_policy) 91 bb.msg.debug(1, bb.msg.domain.Fetcher, "Keeping SRCREV cache due to cache policy of: %s" % srcrev_policy)
92 elif srcrev_policy == "clear": 92 elif srcrev_policy == "clear":
93 bb.msg.debug(1, bb.msg.domain.Fetcher, "Clearing SRCREV cache due to cache policy of: %s" % srcrev_policy) 93 bb.msg.debug(1, bb.msg.domain.Fetcher, "Clearing SRCREV cache due to cache policy of: %s" % srcrev_policy)
94 pd.delDomain("BB_URI_HEADREVS") 94 pd.renameDomain("BB_URI_HEADREVS", "BB_URI_HEADREVS_PREVIOUS")
95 else: 95 else:
96 bb.msg.fatal(bb.msg.domain.Fetcher, "Invalid SRCREV cache policy of: %s" % srcrev_policy) 96 bb.msg.fatal(bb.msg.domain.Fetcher, "Invalid SRCREV cache policy of: %s" % srcrev_policy)
97 # Make sure our domains exist 97 # Make sure our domains exist
98 pd.addDomain("BB_URI_HEADREVS") 98 pd.addDomain("BB_URI_HEADREVS")
99 pd.addDomain("BB_URI_HEADREVS_PREVIOUS")
99 pd.addDomain("BB_URI_LOCALCOUNT") 100 pd.addDomain("BB_URI_LOCALCOUNT")
100 101
102def fetcher_compare_revisons(d):
103 """
104 Compare the revisions in the persistant cache with current values and
105 return true/false on whether they've changed.
106 """
107
108 pd = persist_data.PersistData(d)
109 data = pd.getKeyValues("BB_URI_HEADREVS")
110 data2 = pd.getKeyValues("BB_URI_HEADREVS_PREVIOUS")
111
112 changed = False
113 for key in data:
114 if key not in data2 or data2[key] != data[key]:
115 bb.msg.debug(1, bb.msg.domain.Fetcher, "%s changed" % key)
116 changed = True
117 return True
118 else:
119 bb.msg.debug(2, bb.msg.domain.Fetcher, "%s did not change" % key)
120 return False
121
101# Function call order is usually: 122# Function call order is usually:
102# 1. init 123# 1. init
103# 2. go 124# 2. go
diff --git a/bitbake-dev/lib/bb/ui/knotty.py b/bitbake-dev/lib/bb/ui/knotty.py
index a334c2977e..031fa71578 100644
--- a/bitbake-dev/lib/bb/ui/knotty.py
+++ b/bitbake-dev/lib/bb/ui/knotty.py
@@ -120,6 +120,9 @@ def init(server, eventHandler):
120 120
121 if event[0] == 'bb.command.CookerCommandCompleted': 121 if event[0] == 'bb.command.CookerCommandCompleted':
122 break 122 break
123 if event[0] == 'bb.command.CookerCommandSetExitCode':
124 return_value = event[1]['exitcode']
125 continue
123 if event[0] == 'bb.command.CookerCommandFailed': 126 if event[0] == 'bb.command.CookerCommandFailed':
124 return_value = 1 127 return_value = 1
125 print "Command execution failed: %s" % event[1]['error'] 128 print "Command execution failed: %s" % event[1]['error']