diff options
Diffstat (limited to 'meta/classes/sstate.bbclass')
-rw-r--r-- | meta/classes/sstate.bbclass | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/meta/classes/sstate.bbclass b/meta/classes/sstate.bbclass index b48504429f..de3519a69e 100644 --- a/meta/classes/sstate.bbclass +++ b/meta/classes/sstate.bbclass | |||
@@ -715,20 +715,16 @@ def sstate_checkhashes(sq_fn, sq_task, sq_hash, sq_hashfn, d, siginfo=False): | |||
715 | if localdata.getVar('BB_NO_NETWORK', True) == "1" and localdata.getVar('SSTATE_MIRROR_ALLOW_NETWORK', True) == "1": | 715 | if localdata.getVar('BB_NO_NETWORK', True) == "1" and localdata.getVar('SSTATE_MIRROR_ALLOW_NETWORK', True) == "1": |
716 | localdata.delVar('BB_NO_NETWORK') | 716 | localdata.delVar('BB_NO_NETWORK') |
717 | 717 | ||
718 | for task in range(len(sq_fn)): | 718 | def checkstatus(arg): |
719 | if task in ret: | 719 | (task, sstatefile) = arg |
720 | continue | ||
721 | |||
722 | spec, extrapath, tname = getpathcomponents(task, d) | ||
723 | |||
724 | sstatefile = d.expand(extrapath + generate_sstatefn(spec, sq_hash[task], d) + "_" + tname + extension) | ||
725 | 720 | ||
721 | localdata2 = bb.data.createCopy(localdata) | ||
726 | srcuri = "file://" + sstatefile | 722 | srcuri = "file://" + sstatefile |
727 | localdata.setVar('SRC_URI', srcuri) | 723 | localdata.setVar('SRC_URI', srcuri) |
728 | bb.debug(2, "SState: Attempting to fetch %s" % srcuri) | 724 | bb.debug(2, "SState: Attempting to fetch %s" % srcuri) |
729 | 725 | ||
730 | try: | 726 | try: |
731 | fetcher = bb.fetch2.Fetch(srcuri.split(), localdata) | 727 | fetcher = bb.fetch2.Fetch(srcuri.split(), localdata2) |
732 | fetcher.checkstatus() | 728 | fetcher.checkstatus() |
733 | bb.debug(2, "SState: Successful fetch test for %s" % srcuri) | 729 | bb.debug(2, "SState: Successful fetch test for %s" % srcuri) |
734 | ret.append(task) | 730 | ret.append(task) |
@@ -739,6 +735,22 @@ def sstate_checkhashes(sq_fn, sq_task, sq_hash, sq_hashfn, d, siginfo=False): | |||
739 | bb.debug(2, "SState: Unsuccessful fetch test for %s" % srcuri) | 735 | bb.debug(2, "SState: Unsuccessful fetch test for %s" % srcuri) |
740 | pass | 736 | pass |
741 | 737 | ||
738 | tasklist = [] | ||
739 | for task in range(len(sq_fn)): | ||
740 | if task in ret: | ||
741 | continue | ||
742 | spec, extrapath, tname = getpathcomponents(task, d) | ||
743 | sstatefile = d.expand(extrapath + generate_sstatefn(spec, sq_hash[task], d) + "_" + tname + extension) | ||
744 | tasklist.append((task, sstatefile)) | ||
745 | |||
746 | if tasklist: | ||
747 | import multiprocessing | ||
748 | nproc = min(multiprocessing.cpu_count(), len(tasklist)) | ||
749 | pool = oe.utils.ThreadedPool(nproc) | ||
750 | for t in tasklist: | ||
751 | pool.add_task(checkstatus, t) | ||
752 | pool.wait_completion() | ||
753 | |||
742 | inheritlist = d.getVar("INHERIT", True) | 754 | inheritlist = d.getVar("INHERIT", True) |
743 | if "toaster" in inheritlist: | 755 | if "toaster" in inheritlist: |
744 | evdata = {'missed': [], 'found': []}; | 756 | evdata = {'missed': [], 'found': []}; |