[oe-commits] Richard Purdie : libc-package.bbclass: Use a makefile for locale gernation to increase parallelization

git version control git at git.openembedded.org
Fri Oct 7 12:29:35 UTC 2011


Module: openembedded-core.git
Branch: master-next
Commit: 50c2d173698b20174b838e3bf3f8b55f08f3d1f4
URL:    http://git.openembedded.org/?p=openembedded-core.git&a=commit;h=50c2d173698b20174b838e3bf3f8b55f08f3d1f4

Author: Richard Purdie <richard.purdie at linuxfoundation.org>
Date:   Fri Oct  7 13:25:44 2011 +0100

libc-package.bbclass: Use a makefile for locale gernation to increase parallelization

We can generate the locales in parallel. The easiest way to do this is
generate a Makefile and then run this with our usual parallel make
options.

[YOCTO #1554]

Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>

---

 meta/classes/libc-package.bbclass |   25 +++++++++++++++----------
 1 files changed, 15 insertions(+), 10 deletions(-)

diff --git a/meta/classes/libc-package.bbclass b/meta/classes/libc-package.bbclass
index 71a577b..6ef2f97 100644
--- a/meta/classes/libc-package.bbclass
+++ b/meta/classes/libc-package.bbclass
@@ -252,6 +252,8 @@ python package_do_split_gconvs () {
 		rprovides.append(legitimize_package_name('%s-binary-localedata-%s' % (bpn, libc_name)))
 		bb.data.setVar('RPROVIDES_%s' % pkgname, " ".join(rprovides), d)
 
+	commands = {}
+
 	def output_locale_binary(name, pkgname, locale, encoding):
 		treedir = base_path_join(bb.data.getVar("WORKDIR", d, 1), "locale-tree")
 		ldlibdir = base_path_join(treedir, bb.data.getVar("base_libdir", d, 1))
@@ -298,17 +300,9 @@ python package_do_split_gconvs () {
 				-E LD_LIBRARY_PATH=%s %s %s/bin/localedef %s" % \
 				(path, i18npath, qemu, treedir, ldlibdir, qemu_options, treedir, localedef_opts)
 
+		commands["%s/%s" % (outputpath, name)] = cmd
+
 		bb.note("generating locale %s (%s)" % (locale, encoding))
-		import subprocess
-		process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
-		if process.wait() != 0:
-			bb.note("cmd:")
-			bb.note(cmd)
-			bb.note("stdout:")
-			bb.note(process.stdout.read())
-			bb.note("stderr:")
-			bb.note(process.stderr.read())
-			raise bb.build.FuncFailed("localedef returned an error")
 
 	def output_locale(name, locale, encoding):
 		pkgname = bb.data.getVar('MLPREFIX', d) + 'locale-base-' + legitimize_package_name(name)
@@ -353,6 +347,17 @@ python package_do_split_gconvs () {
 		bb.note("  " + " ".join(non_utf8))
 
 	if use_bin == "compile":
+		makefile = base_path_join(bb.data.getVar("WORKDIR", d, 1), "locale-tree", "Makefile")
+		m = open(makefile, "w")
+		m.write("all: %s\n\n" % " ".join(commands.keys()))
+		for cmd in commands:
+			m.write(cmd + ":\n")
+			m.write("	" + commands[cmd] + "\n\n")
+		m.close()
+		d.setVar("B", os.path.dirname(makefile))
+		d.setVar("EXTRA_OEMAKE", "${PARALLEL_MAKE}")
+		bb.note("Executing binary locale generation makefile")
+		bb.build.exec_func("oe_runmake", d)
 		bb.note("collecting binary locales from locale tree")
 		bb.build.exec_func("do_collect_bins_from_locale_tree", d)
 		do_split_packages(d, binary_locales_dir, file_regex='(.*)', \





More information about the Openembedded-commits mailing list