Lines Matching full:self
84 def __init__(self, filename, metadata): argument
85 self.file_depends = metadata.getVar('__depends', False)
86 self.timestamp = bb.parse.cached_mtime(filename)
87 self.variants = self.listvar('__VARIANTS', metadata) + ['']
88 self.appends = self.listvar('__BBAPPEND', metadata)
89 self.nocache = self.getvar('BB_DONT_CACHE', metadata)
91 self.provides = self.depvar('PROVIDES', metadata)
92 self.rprovides = self.depvar('RPROVIDES', metadata)
93 self.pn = self.getvar('PN', metadata) or bb.parse.vars_from_file(filename,metadata)[0]
94 self.packages = self.listvar('PACKAGES', metadata)
95 if not self.packages:
96 self.packages.append(self.pn)
97 self.packages_dynamic = self.listvar('PACKAGES_DYNAMIC', metadata)
98 self.rprovides_pkg = self.pkgvar('RPROVIDES', self.packages, metadata)
100 self.skipreason = self.getvar('__SKIPPED', metadata)
101 if self.skipreason:
102 self.skipped = True
105 self.tasks = metadata.getVar('__BBTASKS', False)
107 self.basetaskhashes = self.taskvar('BB_BASEHASH', self.tasks, metadata)
108 self.hashfilename = self.getvar('BB_HASHFILENAME', metadata)
110 self.task_deps = metadata.getVar('_task_deps', False) or {'tasks': [], 'parents': {}}
112 self.skipped = False
113 self.pe = self.getvar('PE', metadata)
114 self.pv = self.getvar('PV', metadata)
115 self.pr = self.getvar('PR', metadata)
116 self.defaultpref = self.intvar('DEFAULT_PREFERENCE', metadata)
117 self.not_world = self.getvar('EXCLUDE_FROM_WORLD', metadata)
118 self.stamp = self.getvar('STAMP', metadata)
119 self.stampclean = self.getvar('STAMPCLEAN', metadata)
120 self.stamp_extrainfo = self.flaglist('stamp-extra-info', self.tasks, metadata)
121 self.file_checksums = self.flaglist('file-checksums', self.tasks, metadata, True)
122 self.depends = self.depvar('DEPENDS', metadata)
123 self.rdepends = self.depvar('RDEPENDS', metadata)
124 self.rrecommends = self.depvar('RRECOMMENDS', metadata)
125 self.rdepends_pkg = self.pkgvar('RDEPENDS', self.packages, metadata)
126 self.rrecommends_pkg = self.pkgvar('RRECOMMENDS', self.packages, metadata)
127 self.inherits = self.getvar('__inherit_cache', metadata, expand=False)
128 self.fakerootenv = self.getvar('FAKEROOTENV', metadata)
129 self.fakerootdirs = self.getvar('FAKEROOTDIRS', metadata)
130 self.fakerootlogs = self.getvar('FAKEROOTLOGS', metadata)
131 self.fakerootnoenv = self.getvar('FAKEROOTNOENV', metadata)
132 self.extradepsfunc = self.getvar('calculate_extra_depends', metadata)
171 def add_cacheData(self, cachedata, fn): argument
172 cachedata.task_deps[fn] = self.task_deps
173 cachedata.pkg_fn[fn] = self.pn
174 cachedata.pkg_pn[self.pn].append(fn)
175 cachedata.pkg_pepvpr[fn] = (self.pe, self.pv, self.pr)
176 cachedata.pkg_dp[fn] = self.defaultpref
177 cachedata.stamp[fn] = self.stamp
178 cachedata.stampclean[fn] = self.stampclean
179 cachedata.stamp_extrainfo[fn] = self.stamp_extrainfo
180 cachedata.file_checksums[fn] = self.file_checksums
182 provides = [self.pn]
183 for provide in self.provides:
190 if provide not in cachedata.pn_provides[self.pn]:
191 cachedata.pn_provides[self.pn].append(provide)
193 for dep in self.depends:
199 rprovides = self.rprovides
200 for package in self.packages:
202 rprovides += self.rprovides_pkg[package]
208 for package in self.packages_dynamic:
212 for package in self.packages:
213 cachedata.rundeps[fn][package] = list(self.rdepends) + self.rdepends_pkg[package]
214 cachedata.runrecs[fn][package] = list(self.rrecommends) + self.rrecommends_pkg[package]
218 if not self.not_world:
226 cachedata.universe_target.append(self.pn)
228 cachedata.hashfn[fn] = self.hashfilename
229 for task, taskhash in self.basetaskhashes.items():
233 cachedata.inherits[fn] = self.inherits
234 cachedata.fakerootenv[fn] = self.fakerootenv
235 cachedata.fakerootnoenv[fn] = self.fakerootnoenv
236 cachedata.fakerootdirs[fn] = self.fakerootdirs
237 cachedata.fakerootlogs[fn] = self.fakerootlogs
238 cachedata.extradepsfunc[fn] = self.extradepsfunc
300 def __init__(self, databuilder): argument
301 self.databuilder = databuilder
302 self.data = databuilder.data
304 def loadDataFull(self, virtualfn, appends): argument
311 bb_data = self.load_bbfile(virtualfn, appends, virtonly=True)
314 def load_bbfile(self, bbfile, appends, virtonly = False, mc=None): argument
322 bb_data = self.databuilder.mcdata[mc].createCopy()
328 bb_data = self.databuilder.mcdata[mc].createCopy()
331 bb_data = self.data.createCopy()
334 for mc in self.databuilder.mcdata:
337 bb_data = self.databuilder.mcdata[mc].createCopy()
348 def __init__(self, databuilder, mc, data_hash, caches_array): argument
355 self.mc = mc
356 self.logger = PrefixLoggerAdapter("Cache: %s: " % (mc if mc else "default"), logger)
357 self.caches_array = caches_array
358 self.cachedir = data.getVar("CACHE")
359 self.clean = set()
360 self.checked = set()
361 self.depends_cache = {}
362 self.data_fn = None
363 self.cacheclean = True
364 self.data_hash = data_hash
365 self.filelist_regex = re.compile(r'(?:(?<=:True)|(?<=:False))\s+')
367 if self.cachedir in [None, '']:
368 self.has_cache = False
369 self.logger.info("Not using a cache. "
373 self.has_cache = True
375 def getCacheFile(self, cachefile): argument
376 return getCacheFile(self.cachedir, cachefile, self.mc, self.data_hash)
378 def prepare_cache(self, progress): argument
379 if not self.has_cache:
384 self.cachefile = self.getCacheFile("bb_cache.dat")
386 self.logger.debug("Cache dir: %s", self.cachedir)
387 bb.utils.mkdirhier(self.cachedir)
390 if self.caches_array:
391 for cache_class in self.caches_array:
392 cachefile = self.getCacheFile(cache_class.cachefile)
394 self.logger.debug2("Checking if %s exists: %r", cachefile, cache_exists)
396 cache_class.init_cacheData(self)
398 loaded = self.load_cachefile(progress)
399 elif os.path.isfile(self.cachefile):
400 self.logger.info("Out of date cache found, rebuilding...")
402 self.logger.debug("Cache file %s not found, building..." % self.cachefile)
405 if self.mc:
406 symlink = os.path.join(self.cachedir, "bb_cache.dat.%s" % self.mc)
408 symlink = os.path.join(self.cachedir, "bb_cache.dat")
413 os.symlink(os.path.basename(self.cachefile), symlink)
419 def cachesize(self): argument
420 if not self.has_cache:
424 for cache_class in self.caches_array:
425 cachefile = self.getCacheFile(cache_class.cachefile)
434 def load_cachefile(self, progress): argument
437 for cache_class in self.caches_array:
438 cachefile = self.getCacheFile(cache_class.cachefile)
439 self.logger.debug('Loading cache file: %s' % cachefile)
447 self.logger.info('Invalid cache, rebuilding...')
451 self.logger.info('Cache version mismatch, rebuilding...')
454 self.logger.info('Bitbake version mismatch, rebuilding...')
472 if key in self.depends_cache:
473 self.depends_cache[key].append(value)
475 self.depends_cache[key] = [value]
482 return len(self.depends_cache)
484 def parse(self, filename, appends): argument
486 self.logger.debug("Parsing %s", filename)
488 datastores = self.load_bbfile(filename, appends, mc=self.mc)
503 for cache_class in self.caches_array:
510 def load(self, filename, appends): argument
518 cached = self.cacheValid(filename, appends)
522 info_array = self.depends_cache[filename]
525 infos.append((virtualfn, self.depends_cache[virtualfn]))
527 return self.parse(filename, appends, configdata, self.caches_array)
531 def loadData(self, fn, appends, cacheData): argument
537 cached, infos = self.load(fn, appends)
540 self.logger.debug("Skipping %s: %s", virtualfn, info_array[0].skipreason)
543 self.add_info(virtualfn, info_array, cacheData, not cached)
548 def cacheValid(self, fn, appends): argument
553 if fn not in self.checked:
554 self.cacheValidUpdate(fn, appends)
557 if not self.has_cache:
559 if fn in self.clean:
563 def cacheValidUpdate(self, fn, appends): argument
569 if not self.has_cache:
572 self.checked.add(fn)
575 if not fn in self.depends_cache:
576 self.logger.debug2("%s is not cached", fn)
583 self.logger.debug2("%s no longer exists", fn)
584 self.remove(fn)
587 info_array = self.depends_cache[fn]
590 self.logger.debug2("%s changed", fn)
591 self.remove(fn)
601 self.logger.debug2("%s's dependency %s was removed",
603 self.remove(fn)
607 self.logger.debug2("%s's dependency %s changed",
609 self.remove(fn)
618 flist = self.filelist_regex.split(fl)
624 self.logger.debug2("%s's file checksum list file %s changed",
626 self.remove(fn)
630 self.logger.debug2("appends for %s changed", fn)
631 self.logger.debug2("%s to %s" % (str(appends), str(info_array[0].appends)))
632 self.remove(fn)
638 self.clean.add(virtualfn)
639 if virtualfn not in self.depends_cache:
640 self.logger.debug2("%s is not cached", virtualfn)
642 elif len(self.depends_cache[virtualfn]) != len(self.caches_array):
643 self.logger.debug2("Extra caches missing for %s?" % virtualfn)
650 if virtualfn in self.clean:
651 self.logger.debug2("Removing %s from cache", virtualfn)
652 self.clean.remove(virtualfn)
653 if fn in self.clean:
654 self.logger.debug2("Marking %s as not clean", fn)
655 self.clean.remove(fn)
658 self.clean.add(fn)
661 def remove(self, fn): argument
666 if fn in self.depends_cache:
667 self.logger.debug("Removing %s from cache", fn)
668 del self.depends_cache[fn]
669 if fn in self.clean:
670 self.logger.debug("Marking %s as unclean", fn)
671 self.clean.remove(fn)
673 def sync(self): argument
679 if not self.has_cache:
682 if self.cacheclean:
683 self.logger.debug2("Cache is clean, not saving.")
686 for cache_class in self.caches_array:
688 cachefile = self.getCacheFile(cache_class.cachefile)
689 self.logger.debug2("Writing %s", cachefile)
695 for key, info_array in self.depends_cache.items():
701 del self.depends_cache
707 def add_info(self, filename, info_array, cacheData, parsed=None, watcher=None): argument
708 if self.mc is not None:
711 self.logger.error("Unexpected multiconfig %s", filename)
714 vfn = realfn2virtual(fn, cls, self.mc)
724 if not self.has_cache:
729 self.cacheclean = False
730 self.depends_cache[filename] = info_array
732 def add(self, file_name, data, cacheData, parsed=None): argument
740 for cache_class in self.caches_array:
742 self.add_info(file_name, info_array, cacheData, parsed)
745 def __init__(self, databuilder, data_hash, caches_array): argument
769 self.__caches = {}
772 self.__caches[mc] = Cache(databuilder, mc, data_hash, caches_array)
774 cachesize += self.__caches[mc].cachesize()
779 for c in self.__caches.values():
787 def __len__(self): argument
788 return len(self.__caches)
790 def __getitem__(self, key): argument
791 return self.__caches[key]
793 def __contains__(self, key): argument
794 return key in self.__caches
796 def __iter__(self): argument
797 for k in self.__caches:
825 def __init__(self, caches_array): argument
826 self.caches_array = caches_array
827 for cache_class in self.caches_array:
830 cache_class.init_cacheData(self)
833 self.task_queues = {}
834 self.preferred = {}
835 self.tasks = {}
837 self.ignored_dependencies = []
838 self.world_target = set()
839 self.bbfile_priority = {}
841 def add_from_recipeinfo(self, fn, info_array): argument
843 info.add_cacheData(self, fn)
852 def __init__(self): argument
853 self.cachefile = None
854 self.cachedata = self.create_cachedata()
855 self.cachedata_extras = self.create_cachedata()
857 def init_cache(self, d, cache_file_name=None): argument
863 self.cachefile = os.path.join(cachedir,
864 cache_file_name or self.__class__.cache_file_name)
865 logger.debug("Using cache in '%s'", self.cachefile)
867 glf = bb.utils.lockfile(self.cachefile + ".lock")
870 with open(self.cachefile, "rb") as f:
879 if version != self.__class__.CACHE_VERSION:
882 self.cachedata = data
884 def create_cachedata(self): argument
888 def save_extras(self): argument
889 if not self.cachefile:
892 glf = bb.utils.lockfile(self.cachefile + ".lock", shared=True)
897 lf = bb.utils.lockfile(self.cachefile + ".lock." + str(i), retry=False)
898 if not lf or os.path.exists(self.cachefile + "-" + str(i)):
905 with open(self.cachefile + "-" + str(i), "wb") as f:
907 p.dump([self.cachedata_extras, self.__class__.CACHE_VERSION])
912 def merge_data(self, source, dest): argument
918 def save_merge(self): argument
919 if not self.cachefile:
922 glf = bb.utils.lockfile(self.cachefile + ".lock")
924 data = self.cachedata
926 …for f in [y for y in os.listdir(os.path.dirname(self.cachefile)) if y.startswith(os.path.basename(…
927 f = os.path.join(os.path.dirname(self.cachefile), f)
936 if version != self.__class__.CACHE_VERSION:
940 self.merge_data(extradata, data)
943 with open(self.cachefile, "wb") as f:
945 p.dump([data, self.__class__.CACHE_VERSION])
957 def __init__(self, version): argument
958 self.cachefile = None
959 self.cachedata = None
960 self.cacheversion = version
962 def init_cache(self, d, cache_file_name=None, defaultdata=None): argument
969 self.cachefile = os.path.join(cachedir,
970 cache_file_name or self.__class__.cache_file_name)
971 logger.debug("Using cache in '%s'", self.cachefile)
973 glf = bb.utils.lockfile(self.cachefile + ".lock")
976 with open(self.cachefile, "rb") as f:
985 if version != self.cacheversion:
990 def save(self, data): argument
991 if not self.cachefile:
994 glf = bb.utils.lockfile(self.cachefile + ".lock")
996 with open(self.cachefile, "wb") as f:
998 p.dump([data, self.cacheversion])