diff options
author | Richard Purdie <rpurdie@linux.intel.com> | 2009-07-29 14:33:14 +0100 |
---|---|---|
committer | Richard Purdie <rpurdie@linux.intel.com> | 2009-07-29 14:33:14 +0100 |
commit | 64b04685b6fd029f2f70f7017bfd51d26ccb0d11 (patch) | |
tree | 5d525e2b58e5a9b27ea3096a0047770446baaf29 /bitbake-dev | |
parent | 231b5f67844da39949e04ae53557cea04aacffdd (diff) | |
download | openembedded-core-64b04685b6fd029f2f70f7017bfd51d26ccb0d11.tar.gz openembedded-core-64b04685b6fd029f2f70f7017bfd51d26ccb0d11.tar.bz2 openembedded-core-64b04685b6fd029f2f70f7017bfd51d26ccb0d11.tar.xz openembedded-core-64b04685b6fd029f2f70f7017bfd51d26ccb0d11.zip |
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')
-rwxr-xr-x | bitbake-dev/bin/bitbake | 3 | ||||
-rw-r--r-- | bitbake-dev/lib/bb/command.py | 19 | ||||
-rw-r--r-- | bitbake-dev/lib/bb/cooker.py | 6 | ||||
-rw-r--r-- | bitbake-dev/lib/bb/fetch/__init__.py | 23 | ||||
-rw-r--r-- | bitbake-dev/lib/bb/ui/knotty.py | 3 |
5 files changed, 53 insertions, 1 deletions
diff --git a/bitbake-dev/bin/bitbake b/bitbake-dev/bin/bitbake index f4cd0cb69..d9aa91042 100755 --- a/bitbake-dev/bin/bitbake +++ b/bitbake-dev/bin/bitbake @@ -124,6 +124,9 @@ Default BBFILES are the .bb files in the current directory.""" ) parser.add_option( "-u", "--ui", help = "userinterface to use", action = "store", dest = "ui") + parser.add_option( "", "--revisions-changed", help = "Set the exit code depending on whether upstream floating revisions have changed or not", + action = "store_true", dest = "revisions_changed", default = False ) + options, args = parser.parse_args(sys.argv) configuration = BBConfiguration(options) diff --git a/bitbake-dev/lib/bb/command.py b/bitbake-dev/lib/bb/command.py index 9226a2772..e7c3770ff 100644 --- a/bitbake-dev/lib/bb/command.py +++ b/bitbake-dev/lib/bb/command.py @@ -233,6 +233,14 @@ class CommandsAsync: command.finishAsyncCommand() parseFiles.needcache = True + def compareRevisions(self, command, params): + """ + Parse the .bb files + """ + command.cooker.compareRevisions() + command.finishAsyncCommand() + compareRevisions.needcache = True + # # Events # @@ -251,3 +259,14 @@ class CookerCommandFailed(bb.event.Event): def __init__(self, data, error): bb.event.Event.__init__(self, data) self.error = error + +class CookerCommandSetExitCode(bb.event.Event): + """ + Set the exit code for a cooker command + """ + def __init__(self, data, exitcode): + bb.event.Event.__init__(self, data) + self.exitcode = int(exitcode) + + + diff --git a/bitbake-dev/lib/bb/cooker.py b/bitbake-dev/lib/bb/cooker.py index bec6c3535..b2b237b4c 100644 --- a/bitbake-dev/lib/bb/cooker.py +++ b/bitbake-dev/lib/bb/cooker.py @@ -147,6 +147,8 @@ class BBCooker: self.commandlineAction = ["showEnvironment", self.configuration.buildfile] elif self.configuration.buildfile is not None: self.commandlineAction = ["buildFile", self.configuration.buildfile, self.configuration.cmd] + elif self.configuration.revisions_changed: + self.commandlineAction = ["compareRevisions"] elif self.configuration.show_versions: self.commandlineAction = ["showVersions"] elif self.configuration.parse_only: @@ -241,6 +243,10 @@ class BBCooker: bb.msg.plain("%-35s %25s %25s" % (p, lateststr, prefstr)) + def compareRevisions(self): + ret = bb.fetch.fetcher_compare_revisons(self.configuration.data) + bb.event.fire(bb.command.CookerCommandSetExitCode(self.configuration.event_data, ret)) + def showEnvironment(self, buildfile = None, pkgs_to_build = []): """ 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 39a577b2e..8ddcd3870 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): bb.msg.debug(1, bb.msg.domain.Fetcher, "Keeping SRCREV cache due to cache policy of: %s" % srcrev_policy) elif srcrev_policy == "clear": bb.msg.debug(1, bb.msg.domain.Fetcher, "Clearing SRCREV cache due to cache policy of: %s" % srcrev_policy) - pd.delDomain("BB_URI_HEADREVS") + pd.renameDomain("BB_URI_HEADREVS", "BB_URI_HEADREVS_PREVIOUS") else: bb.msg.fatal(bb.msg.domain.Fetcher, "Invalid SRCREV cache policy of: %s" % srcrev_policy) # Make sure our domains exist pd.addDomain("BB_URI_HEADREVS") + pd.addDomain("BB_URI_HEADREVS_PREVIOUS") pd.addDomain("BB_URI_LOCALCOUNT") +def fetcher_compare_revisons(d): + """ + Compare the revisions in the persistant cache with current values and + return true/false on whether they've changed. + """ + + pd = persist_data.PersistData(d) + data = pd.getKeyValues("BB_URI_HEADREVS") + data2 = pd.getKeyValues("BB_URI_HEADREVS_PREVIOUS") + + changed = False + for key in data: + if key not in data2 or data2[key] != data[key]: + bb.msg.debug(1, bb.msg.domain.Fetcher, "%s changed" % key) + changed = True + return True + else: + bb.msg.debug(2, bb.msg.domain.Fetcher, "%s did not change" % key) + return False + # Function call order is usually: # 1. init # 2. go diff --git a/bitbake-dev/lib/bb/ui/knotty.py b/bitbake-dev/lib/bb/ui/knotty.py index a334c2977..031fa7157 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): if event[0] == 'bb.command.CookerCommandCompleted': break + if event[0] == 'bb.command.CookerCommandSetExitCode': + return_value = event[1]['exitcode'] + continue if event[0] == 'bb.command.CookerCommandFailed': return_value = 1 print "Command execution failed: %s" % event[1]['error'] |