summaryrefslogtreecommitdiffstats
path: root/bitbake
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
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')
-rwxr-xr-xbitbake/bin/bitbake3
-rw-r--r--bitbake/lib/bb/cooker.py3
-rw-r--r--bitbake/lib/bb/fetch/__init__.py23
3 files changed, 28 insertions, 1 deletions
diff --git a/bitbake/bin/bitbake b/bitbake/bin/bitbake
index f3294106ef..842ba0441e 100755
--- a/bitbake/bin/bitbake
+++ b/bitbake/bin/bitbake
@@ -108,6 +108,9 @@ Default BBFILES are the .bb files in the current directory.""" )
108 parser.add_option( "-P", "--profile", help = "profile the command and print a report", 108 parser.add_option( "-P", "--profile", help = "profile the command and print a report",
109 action = "store_true", dest = "profile", default = False ) 109 action = "store_true", dest = "profile", default = False )
110 110
111 parser.add_option( "", "--revisions-changed", help = "Set the exit code depending on whether upstream floating revisions have changed or not",
112 action = "store_true", dest = "revisions_changed", default = False )
113
111 options, args = parser.parse_args(sys.argv) 114 options, args = parser.parse_args(sys.argv)
112 115
113 configuration = BBConfiguration(options) 116 configuration = BBConfiguration(options)
diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py
index 1f31d1203a..b0692431bb 100644
--- a/bitbake/lib/bb/cooker.py
+++ b/bitbake/lib/bb/cooker.py
@@ -612,6 +612,9 @@ class BBCooker:
612 # initialise the parsing status now we know we will need deps 612 # initialise the parsing status now we know we will need deps
613 self.updateCache() 613 self.updateCache()
614 614
615 if self.configuration.revisions_changed:
616 sys.exit(bb.fetch.fetcher_compare_revisons(self.configuration.data))
617
615 if self.configuration.parse_only: 618 if self.configuration.parse_only:
616 bb.msg.note(1, bb.msg.domain.Collection, "Requested parsing .bb files only. Exiting.") 619 bb.msg.note(1, bb.msg.domain.Collection, "Requested parsing .bb files only. Exiting.")
617 return 0 620 return 0
diff --git a/bitbake/lib/bb/fetch/__init__.py b/bitbake/lib/bb/fetch/__init__.py
index 39a8180a89..a97138d271 100644
--- a/bitbake/lib/bb/fetch/__init__.py
+++ b/bitbake/lib/bb/fetch/__init__.py
@@ -97,13 +97,34 @@ def fetcher_init(d):
97 bb.msg.debug(1, bb.msg.domain.Fetcher, "Keeping SRCREV cache due to cache policy of: %s" % srcrev_policy) 97 bb.msg.debug(1, bb.msg.domain.Fetcher, "Keeping SRCREV cache due to cache policy of: %s" % srcrev_policy)
98 elif srcrev_policy == "clear": 98 elif srcrev_policy == "clear":
99 bb.msg.debug(1, bb.msg.domain.Fetcher, "Clearing SRCREV cache due to cache policy of: %s" % srcrev_policy) 99 bb.msg.debug(1, bb.msg.domain.Fetcher, "Clearing SRCREV cache due to cache policy of: %s" % srcrev_policy)
100 pd.delDomain("BB_URI_HEADREVS") 100 pd.renameDomain("BB_URI_HEADREVS", "BB_URI_HEADREVS_PREVIOUS")
101 else: 101 else:
102 bb.msg.fatal(bb.msg.domain.Fetcher, "Invalid SRCREV cache policy of: %s" % srcrev_policy) 102 bb.msg.fatal(bb.msg.domain.Fetcher, "Invalid SRCREV cache policy of: %s" % srcrev_policy)
103 # Make sure our domains exist 103 # Make sure our domains exist
104 pd.addDomain("BB_URI_HEADREVS") 104 pd.addDomain("BB_URI_HEADREVS")
105 pd.addDomain("BB_URI_HEADREVS_PREVIOUS")
105 pd.addDomain("BB_URI_LOCALCOUNT") 106 pd.addDomain("BB_URI_LOCALCOUNT")
106 107
108def fetcher_compare_revisons(d):
109 """
110 Compare the revisions in the persistant cache with current values and
111 return true/false on whether they've changed.
112 """
113
114 pd = persist_data.PersistData(d)
115 data = pd.getKeyValues("BB_URI_HEADREVS")
116 data2 = pd.getKeyValues("BB_URI_HEADREVS_PREVIOUS")
117
118 changed = False
119 for key in data:
120 if key not in data2 or data2[key] != data[key]:
121 bb.msg.debug(1, bb.msg.domain.Fetcher, "%s changed" % key)
122 changed = True
123 return True
124 else:
125 bb.msg.debug(2, bb.msg.domain.Fetcher, "%s did not change" % key)
126 return False
127
107# Function call order is usually: 128# Function call order is usually:
108# 1. init 129# 1. init
109# 2. go 130# 2. go