bitbake: Sync with upstream 1.8 branch for fixes
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@2484 311d38ba-8fff-0310-9ca6-ca027cbcb966
This commit is contained in:
parent
fc136f0b4c
commit
ce800d3aea
|
@ -12,7 +12,14 @@ Changes in Bitbake 1.8.x:
|
|||
- Add pn-PN to overrides when evaluating PREFERRED_VERSION
|
||||
- Improve the progress indicator by skipping tasks that have
|
||||
already run before starting the build rather than during it
|
||||
- Add profiling option (-P)
|
||||
- Add profiling option (-P)
|
||||
- Add BB_SRCREV_POLICY variable (clear or cache) to control SRCREV cache
|
||||
- Add SRCREV_FORMAT support
|
||||
- Fix local fetcher's localpath return values
|
||||
- Apply OVERRIDES before performing immediate expansions
|
||||
- Allow the -b -e option combination to take regular expressions
|
||||
- Fix handling of variables with expansion in the name using _append/_prepend
|
||||
e.g. RRECOMMENDS_${PN}_append_xyz = "abc"
|
||||
|
||||
Changes in Bitbake 1.8.6:
|
||||
- Correctly redirect stdin when forking
|
||||
|
|
|
@ -345,14 +345,20 @@ def encodeurl(decoded):
|
|||
#######################################################################
|
||||
|
||||
def which(path, item, direction = 0):
|
||||
"""Useful function for locating a file in a PATH"""
|
||||
found = ""
|
||||
"""
|
||||
Locate a file in a PATH
|
||||
"""
|
||||
|
||||
paths = (path or "").split(':')
|
||||
if direction != 0:
|
||||
paths.reverse()
|
||||
|
||||
for p in (path or "").split(':'):
|
||||
if os.path.exists(os.path.join(p, item)):
|
||||
found = os.path.join(p, item)
|
||||
if direction == 0:
|
||||
break
|
||||
return found
|
||||
next = os.path.join(p, item)
|
||||
if os.path.exists(next):
|
||||
return next
|
||||
|
||||
return ""
|
||||
|
||||
#######################################################################
|
||||
|
||||
|
|
|
@ -143,10 +143,11 @@ class BBCooker:
|
|||
if self.configuration.buildfile:
|
||||
self.cb = None
|
||||
self.bb_cache = bb.cache.init(self)
|
||||
bf = self.matchFile(self.configuration.buildfile)
|
||||
try:
|
||||
self.configuration.data = self.bb_cache.loadDataFull(self.configuration.buildfile, self.configuration.data)
|
||||
self.configuration.data = self.bb_cache.loadDataFull(bf, self.configuration.data)
|
||||
except IOError, e:
|
||||
bb.msg.fatal(bb.msg.domain.Parsing, "Unable to read %s: %s" % ( self.configuration.buildfile, e ))
|
||||
bb.msg.fatal(bb.msg.domain.Parsing, "Unable to read %s: %s" % (bf, e))
|
||||
except Exception, e:
|
||||
bb.msg.fatal(bb.msg.domain.Parsing, "%s" % e)
|
||||
# emit variables and shell functions
|
||||
|
@ -377,14 +378,15 @@ class BBCooker:
|
|||
bb.data.setVar("BUILDNAME", os.popen('date +%Y%m%d%H%M').readline().strip(), self.configuration.data)
|
||||
bb.data.setVar("BUILDSTART", time.strftime('%m/%d/%Y %H:%M:%S',time.gmtime()),self.configuration.data)
|
||||
|
||||
def buildFile(self, buildfile):
|
||||
def matchFile(self, buildfile):
|
||||
"""
|
||||
Build the file matching regexp buildfile
|
||||
Convert the fragment buildfile into a real file
|
||||
Error if there are too many matches
|
||||
"""
|
||||
|
||||
bf = os.path.abspath(buildfile)
|
||||
try:
|
||||
os.stat(bf)
|
||||
return bf
|
||||
except OSError:
|
||||
(filelist, masked) = self.collect_bbfiles()
|
||||
regexp = re.compile(buildfile)
|
||||
|
@ -398,7 +400,14 @@ class BBCooker:
|
|||
for f in matches:
|
||||
bb.msg.error(bb.msg.domain.Parsing, " %s" % f)
|
||||
sys.exit(1)
|
||||
bf = matches[0]
|
||||
return matches[0]
|
||||
|
||||
def buildFile(self, buildfile):
|
||||
"""
|
||||
Build the file matching regexp buildfile
|
||||
"""
|
||||
|
||||
bf = self.matchFile(buildfile)
|
||||
|
||||
bbfile_data = bb.parse.handle(bf, self.configuration.data)
|
||||
|
||||
|
|
|
@ -288,6 +288,10 @@ def expandKeys(alterdata, readdata = None):
|
|||
src = getVarFlag(key, i, readdata) or []
|
||||
dest.extend(src)
|
||||
setVarFlag(ekey, i, dest, alterdata)
|
||||
|
||||
if key in alterdata._special_values[i]:
|
||||
alterdata._special_values[i].remove(key)
|
||||
alterdata._special_values[i].add(ekey)
|
||||
|
||||
delVar(key, alterdata)
|
||||
|
||||
|
|
|
@ -182,8 +182,21 @@ def get_srcrev(d):
|
|||
if len(scms) == 1:
|
||||
return urldata[scms[0]].method.sortable_revision(scms[0], urldata[scms[0]], d)
|
||||
|
||||
bb.msg.error(bb.msg.domain.Fetcher, "Sorry, support for SRCREV_FORMAT still needs to be written")
|
||||
raise ParameterError
|
||||
#
|
||||
# Mutiple SCMs are in SRC_URI so we resort to SRCREV_FORMAT
|
||||
#
|
||||
format = bb.data.getVar('SRCREV_FORMAT', d, 1)
|
||||
if not format:
|
||||
bb.msg.error(bb.msg.domain.Fetcher, "The SRCREV_FORMAT variable must be set when multiple SCMs are used.")
|
||||
raise ParameterError
|
||||
|
||||
for scm in scms:
|
||||
if 'name' in urldata[scm].parm:
|
||||
name = urldata[scm].parm["name"]
|
||||
rev = urldata[scm].method.sortable_revision(scm, urldata[scm], d)
|
||||
format = format.replace(name, rev)
|
||||
|
||||
return format
|
||||
|
||||
def localpath(url, d, cache = True):
|
||||
"""
|
||||
|
|
|
@ -38,9 +38,11 @@ class Local(Fetch):
|
|||
return urldata.type in ['file','patch']
|
||||
|
||||
def localpath(self, url, urldata, d):
|
||||
"""Return the local filename of a given url assuming a successful fetch.
|
||||
"""
|
||||
Return the local filename of a given url assuming a successful fetch.
|
||||
"""
|
||||
path = url.split("://")[1]
|
||||
path = path.split(";")[0]
|
||||
newpath = path
|
||||
if path[0] != "/":
|
||||
filespath = data.getVar('FILESPATH', d, 1)
|
||||
|
|
Loading…
Reference in New Issue