[oe-commits] org.nslu2-linux.bitbake bitbake: release 332
jbowler commit
openembedded-commits at lists.openembedded.org
Mon Oct 23 17:44:48 UTC 2006
bitbake: release 332
Author: jbowler at nslu2-linux.org
Branch: org.nslu2-linux.bitbake
Revision: cd0a4d6c9c743c1d4137094c5bd53a400f8faedf
ViewMTN: http://monotone.openembedded.org/revision.psp?id=cd0a4d6c9c743c1d4137094c5bd53a400f8faedf
Files:
1
bin/bitbake
lib/bb/fetch/wget.py
Diffs:
#
# mt diff -r9f7b9c181426ea832a65d37361521ce31c0494a7 -rcd0a4d6c9c743c1d4137094c5bd53a400f8faedf
#
#
#
# patch "bin/bitbake"
# from [f8ebcc69ac6b2003210621cc312debea7c8c4474]
# to [b76b834a7c16eefaedb0c8ef09394551541a4fac]
#
# patch "lib/bb/fetch/wget.py"
# from [d729800113b929cee09614debe670a9643e0e09c]
# to [1430b41d7bd591bfe20473c9d0aa9255b8e94d9d]
#
============================================================
--- bin/bitbake f8ebcc69ac6b2003210621cc312debea7c8c4474
+++ bin/bitbake b76b834a7c16eefaedb0c8ef09394551541a4fac
@@ -46,6 +46,8 @@ class BBParsingStatus:
def __init__(self):
self.cache_dirty = False
self.providers = {}
+ self.packages = {}
+ self.packages_dynamic = {}
self.bbfile_priority = {}
self.bbfile_config_priorities = []
self.ignored_dependencies = None
@@ -75,6 +77,8 @@ class BBParsingStatus:
dp = int(bb.data.getVar('DEFAULT_PREFERENCE', bb_data, True) or "0")
provides = Set([pn] + (bb.data.getVar("PROVIDES", bb_data, 1) or "").split())
depends = (bb.data.getVar("DEPENDS", bb_data, True) or "").split()
+ packages = (bb.data.getVar('PACKAGES', bb_data, True) or "").split()
+ packages_dynamic = (bb.data.getVar('PACKAGES_DYNAMIC', bb_data, True) or "").split()
# build PackageName to FileName lookup table
@@ -102,6 +106,19 @@ class BBParsingStatus:
for dep in depends:
self.all_depends.add(dep)
+ # Build reverse hash for PACKAGES, so runtime dependencies
+ # can be be resolved (RDEPENDS, RRECOMMENDS etc.)
+
+ for package in packages:
+ if not package in self.packages:
+ self.packages[package] = []
+ self.packages[package].append(file_name)
+
+ for package in packages_dynamic:
+ if not package in self.packages_dynamic:
+ self.packages_dynamic[package] = []
+ self.packages_dynamic[package].append(file_name)
+
# Collect files we may need for possible world-dep
# calculations
if not bb.data.getVar('BROKEN', bb_data, True) and not bb.data.getVar('EXCLUDE_FROM_WORLD', bb_data, True):
@@ -194,7 +211,7 @@ class BBCooker:
self.build_cache_fail.append(fn)
raise
- def tryBuild( self, fn, virtual ):
+ def tryBuild( self, fn, virtual , buildAllDeps ):
"""Build a provider and its dependencies"""
if fn in self.building_list:
bb.error("%s depends on itself (eventually)" % fn)
@@ -209,11 +226,19 @@ class BBCooker:
pathstr = "%s (%s)" % (item, virtual)
self.build_path.append(pathstr)
- depends_list = (bb.data.getVar('DEPENDS', the_data, 1) or "").split()
+ depends_list = (bb.data.getVar('DEPENDS', the_data, 1) or "")
+ if not buildAllDeps:
+ buildAllDeps = bb.data.getVar('BUILD_ALL_DEPS', the_data, 1) or False
+
+ if buildAllDeps:
+ depends_list = "%s %s %s" % (depends_list, (bb.data.getVar('RDEPENDS', the_data, 1) or ""), (bb.data.getVar('RRECOMMENDS', the_data, 1) or ""))
+
if self.configuration.verbose:
bb.note("current path: %s" % (" -> ".join(self.build_path)))
- bb.note("dependencies for %s are: %s" % (item, " ".join(depends_list)))
+ bb.note("dependencies for %s are: %s" % (item, depends_list))
+ depends_list = depends_list.split()
+
try:
failed = False
@@ -234,7 +259,7 @@ class BBCooker:
continue
if not depcmd:
continue
- if self.buildProvider( dependency ) == 0:
+ if self.buildProvider( dependency , buildAllDeps ) == 0:
bb.error("dependency %s (for %s) not satisfied" % (dependency,item))
failed = True
if self.configuration.abort:
@@ -379,17 +404,40 @@ class BBCooker:
if data.getVarFlag( e, 'python', self.configuration.data ):
sys.__stdout__.write("\npython %s () {\n%s}\n" % (e, data.getVar(e, self.configuration.data, 1)))
- def buildProvider( self, item ):
+ def getProviders(self, item, buildAllDeps):
+
+ if item in self.status.providers:
+ return self.status.providers[item]
+
+ if not buildAllDeps:
+ return False
+
+ if item in self.status.packages:
+ return self.status.packages[item]
+
+ matches = []
+ for pattern in self.status.packages_dynamic:
+ regexp = re.compile(pattern)
+ if regexp.match(item):
+ for fn in self.status.packages_dynamic[pattern]:
+ matches.append(fn)
+
+ if matches:
+ return matches
+
+ return False
+
+ def buildProvider( self, item , buildAllDeps ):
fn = None
discriminated = False
- if item not in self.status.providers:
+ all_p = self.getProviders(item, buildAllDeps)
+
+ if not all_p:
bb.error("Nothing provides %s" % item)
return 0
- all_p = self.status.providers[item]
-
for p in all_p:
if p in self.build_cache:
bb.debug(1, "already built %s in this run\n" % p)
@@ -476,7 +524,7 @@ class BBCooker:
# run through the list until we find one that we can build
for fn in eligible:
bb.debug(2, "selecting %s to satisfy %s" % (fn, item))
- if self.tryBuild(fn, item):
+ if self.tryBuild(fn, item, buildAllDeps):
return 1
bb.note("no buildable providers for %s" % item)
@@ -694,7 +742,7 @@ class BBCooker:
for k in pkgs_to_build:
failed = False
try:
- if self.buildProvider( k ) == 0:
+ if self.buildProvider( k , False ) == 0:
# already diagnosed
failed = True
except bb.build.EventException:
============================================================
--- lib/bb/fetch/wget.py d729800113b929cee09614debe670a9643e0e09c
+++ lib/bb/fetch/wget.py 1430b41d7bd591bfe20473c9d0aa9255b8e94d9d
@@ -63,7 +63,10 @@ class Wget(Fetch):
file.
It can return None if no md5sum is associated
"""
- return parm['md5sum']
+ try:
+ return parm['md5sum']
+ except:
+ return None
def verify_md5sum(wanted_sum, got_sum):
"""
More information about the Openembedded-commits
mailing list