All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] busybox: Add parallel make fix
@ 2016-08-19 15:28 Richard Purdie
  0 siblings, 0 replies; only message in thread
From: Richard Purdie @ 2016-08-19 15:28 UTC (permalink / raw)
  To: openembedded-core

We're seeing regular parallel make failures in applet headers in busybox.
This adds a patch to try and avoid the issue, building upon a fix already
backported from upstream. The patch has been sent to upstream.

[YOCTO #10116]

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

diff --git a/meta/recipes-core/busybox/busybox/parallel-make-fix.patch b/meta/recipes-core/busybox/busybox/parallel-make-fix.patch
new file mode 100644
index 0000000..120dff1
--- /dev/null
+++ b/meta/recipes-core/busybox/busybox/parallel-make-fix.patch
@@ -0,0 +1,65 @@
+When applet_tables is run, we need it to touch both output files,
+else make will keep calling the command, potentially leading to races
+as the files are potentially rewritten.
+
+We also need to ensure that applet_tables is called once, not twice, 
+potentially in parallel. To do this, make one file depend upon the other.
+
+Upstream-Status: Submitted
+RP 2016/8/19
+
+Index: busybox-1.24.1/applets/Kbuild.src
+===================================================================
+--- busybox-1.24.1.orig/applets/Kbuild.src
++++ busybox-1.24.1/applets/Kbuild.src
+@@ -29,7 +29,7 @@ applets/applets.o: include/usage_compres
+ 
+ applets/applet_tables: .config include/applets.h
+ applets/usage:         .config include/applets.h
+-applets/usage_pod:     .config include/applets.h include/applet_tables.h include/NUM_APPLETS.h
++applets/usage_pod:     .config include/applets.h include/applet_tables.h
+ 
+ quiet_cmd_gen_usage_compressed = GEN     include/usage_compressed.h
+       cmd_gen_usage_compressed = $(srctree_slash)applets/usage_compressed include/usage_compressed.h applets
+@@ -40,5 +40,7 @@ include/usage_compressed.h: applets/usag
+ quiet_cmd_gen_applet_tables = GEN     include/applet_tables.h
+       cmd_gen_applet_tables = applets/applet_tables include/applet_tables.h include/NUM_APPLETS.h
+ 
+-include/applet_tables.h include/NUM_APPLETS.h: applets/applet_tables
++include/NUM_APPLETS.h: applets/applet_tables
+ 	$(call cmd,gen_applet_tables)
++
++include/applet_tables.h: include/NUM_APPLETS.h
+Index: busybox-1.24.1/applets/applet_tables.c
+===================================================================
+--- busybox-1.24.1.orig/applets/applet_tables.c
++++ busybox-1.24.1/applets/applet_tables.c
+@@ -151,23 +151,15 @@ int main(int argc, char **argv)
+ //	printf("#define MAX_APPLET_NAME_LEN %u\n", MAX_APPLET_NAME_LEN);
+ 
+ 	if (argv[2]) {
+-		char line_old[80];
+ 		char line_new[80];
+ 		FILE *fp;
+ 
+-		line_old[0] = 0;
+-		fp = fopen(argv[2], "r");
+-		if (fp) {
+-			fgets(line_old, sizeof(line_old), fp);
+-			fclose(fp);
+-		}
+ 		sprintf(line_new, "#define NUM_APPLETS %u\n", NUM_APPLETS);
+-		if (strcmp(line_old, line_new) != 0) {
+-			fp = fopen(argv[2], "w");
+-			if (!fp)
+-				return 1;
+-			fputs(line_new, fp);
+-		}
++		fp = fopen(argv[2], "w");
++		if (!fp)
++			return 1;
++		fputs(line_new, fp);
++		fclose(fp);
+ 	}
+ 
+ 	return 0;
diff --git a/meta/recipes-core/busybox/busybox_1.24.1.bb b/meta/recipes-core/busybox/busybox_1.24.1.bb
index 7edd32d..e8265cd 100644
--- a/meta/recipes-core/busybox/busybox_1.24.1.bb
+++ b/meta/recipes-core/busybox/busybox_1.24.1.bb
@@ -49,6 +49,7 @@ SRC_URI = "http://www.busybox.net/downloads/busybox-${PV}.tar.bz2;name=tarball \
            file://CVE-2016-2147_2.patch \
            file://ip_fix_problem_on_mips64_n64_big_endian_musl_systems.patch \
            file://makefile-fix-backport.patch \
+           file://parallel-make-fix.patch \
 "
 SRC_URI_append_libc-musl = " file://musl.cfg "
 




^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2016-08-19 15:28 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-08-19 15:28 [PATCH] busybox: Add parallel make fix Richard Purdie

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.