summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta/classes/package_deb.bbclass51
-rw-r--r--meta/classes/package_ipk.bbclass51
2 files changed, 2 insertions, 100 deletions
diff --git a/meta/classes/package_deb.bbclass b/meta/classes/package_deb.bbclass
index 2e8d17d3c7..6f81591653 100644
--- a/meta/classes/package_deb.bbclass
+++ b/meta/classes/package_deb.bbclass
@@ -41,32 +41,6 @@ def debian_arch_map(arch, tune):
return arch
python do_package_deb () {
-
- import multiprocessing
- import traceback
-
- class DebianWritePkgProcess(multiprocessing.Process):
- def __init__(self, *args, **kwargs):
- multiprocessing.Process.__init__(self, *args, **kwargs)
- self._pconn, self._cconn = multiprocessing.Pipe()
- self._exception = None
-
- def run(self):
- try:
- multiprocessing.Process.run(self)
- self._cconn.send(None)
- except Exception as e:
- tb = traceback.format_exc()
- self._cconn.send((e, tb))
-
- @property
- def exception(self):
- if self._pconn.poll():
- self._exception = self._pconn.recv()
- return self._exception
-
- oldcwd = os.getcwd()
-
packages = d.getVar('PACKAGES')
if not packages:
bb.debug(1, "PACKAGES not defined, nothing to package")
@@ -76,30 +50,7 @@ python do_package_deb () {
if os.access(os.path.join(tmpdir, "stamps", "DEB_PACKAGE_INDEX_CLEAN"),os.R_OK):
os.unlink(os.path.join(tmpdir, "stamps", "DEB_PACKAGE_INDEX_CLEAN"))
- max_process = int(d.getVar("BB_NUMBER_THREADS") or os.cpu_count() or 1)
- launched = []
- error = None
- pkgs = packages.split()
- while not error and pkgs:
- if len(launched) < max_process:
- p = DebianWritePkgProcess(target=deb_write_pkg, args=(pkgs.pop(), d))
- p.start()
- launched.append(p)
- for q in launched:
- # The finished processes are joined when calling is_alive()
- if not q.is_alive():
- launched.remove(q)
- if q.exception:
- error, traceback = q.exception
- break
-
- for p in launched:
- p.join()
-
- os.chdir(oldcwd)
-
- if error:
- raise error
+ oe.utils.multiprocess_launch(deb_write_pkg, packages.split(), d, extraargs=(d,))
}
do_package_deb[vardeps] += "deb_write_pkg"
do_package_deb[vardepsexclude] = "BB_NUMBER_THREADS"
diff --git a/meta/classes/package_ipk.bbclass b/meta/classes/package_ipk.bbclass
index a0b34fa7a5..5eb910ca31 100644
--- a/meta/classes/package_ipk.bbclass
+++ b/meta/classes/package_ipk.bbclass
@@ -17,32 +17,6 @@ OPKG_ARGS += "${@['', '--add-exclude ' + ' --add-exclude '.join((d.getVar('PACKA
OPKGLIBDIR = "${localstatedir}/lib"
python do_package_ipk () {
- import multiprocessing
- import traceback
-
- class IPKWritePkgProcess(multiprocessing.Process):
- def __init__(self, *args, **kwargs):
- multiprocessing.Process.__init__(self, *args, **kwargs)
- self._pconn, self._cconn = multiprocessing.Pipe()
- self._exception = None
-
- def run(self):
- try:
- multiprocessing.Process.run(self)
- self._cconn.send(None)
- except Exception as e:
- tb = traceback.format_exc()
- self._cconn.send((e, tb))
-
- @property
- def exception(self):
- if self._pconn.poll():
- self._exception = self._pconn.recv()
- return self._exception
-
-
- oldcwd = os.getcwd()
-
workdir = d.getVar('WORKDIR')
outdir = d.getVar('PKGWRITEDIRIPK')
tmpdir = d.getVar('TMPDIR')
@@ -61,30 +35,7 @@ python do_package_ipk () {
if os.access(os.path.join(tmpdir, "stamps", "IPK_PACKAGE_INDEX_CLEAN"), os.R_OK):
os.unlink(os.path.join(tmpdir, "stamps", "IPK_PACKAGE_INDEX_CLEAN"))
- max_process = int(d.getVar("BB_NUMBER_THREADS") or os.cpu_count() or 1)
- launched = []
- error = None
- pkgs = packages.split()
- while not error and pkgs:
- if len(launched) < max_process:
- p = IPKWritePkgProcess(target=ipk_write_pkg, args=(pkgs.pop(), d))
- p.start()
- launched.append(p)
- for q in launched:
- # The finished processes are joined when calling is_alive()
- if not q.is_alive():
- launched.remove(q)
- if q.exception:
- error, traceback = q.exception
- break
-
- for p in launched:
- p.join()
-
- os.chdir(oldcwd)
-
- if error:
- raise error
+ oe.utils.multiprocess_launch(ipk_write_pkg, packages.split(), d, extraargs=(d,))
}
do_package_ipk[vardeps] += "ipk_write_pkg"
do_package_ipk[vardepsexclude] = "BB_NUMBER_THREADS"