busybox: Add parallel make fix

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]

(From OE-Core rev: 199cef0e8a50b20d0ee6fefd1d4cf3372eba7728)

(From OE-Core rev: e3cca9da7e7a7f10db708f39097e1d8700f8ba2d)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Richard Purdie
2016-08-19 16:28:17 +01:00
parent 23aabca217
commit ab4f42608a
2 changed files with 66 additions and 0 deletions

View File

@@ -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;

View File

@@ -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 "