From a866a05e2c7d090a77aa6e95339c93e3592703a6 Mon Sep 17 00:00:00 2001 From: Juro Bystricky Date: Wed, 14 Sep 2016 10:05:46 -0700 Subject: busybox: Avoid race building libbb When building busybox, an occasional error was observed. The error is consistently the same: libbb/appletlib.c:164:13: error: 'NUM_APPLETS' undeclared (first use in this function) while (i < NUM_APPLETS) { The reason is the include file where NUM_APPLETS is defined is not yet generated (or is being modified) at the time libbb/appletlib.c is compiled. The attached patchset fixes the problem by assuring libb is compiled as the last directory. [YOCTO#10116] Signed-off-by: Juro Bystricky Signed-off-by: Richard Purdie --- .../busybox/busybox/makefile-libbb-race.patch | 34 ++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 meta/recipes-core/busybox/busybox/makefile-libbb-race.patch (limited to 'meta/recipes-core/busybox/busybox/makefile-libbb-race.patch') diff --git a/meta/recipes-core/busybox/busybox/makefile-libbb-race.patch b/meta/recipes-core/busybox/busybox/makefile-libbb-race.patch new file mode 100644 index 0000000000..97278ab973 --- /dev/null +++ b/meta/recipes-core/busybox/busybox/makefile-libbb-race.patch @@ -0,0 +1,34 @@ +There is a potential race when building libbb, as some header files +needed by libbb are not generated yet (or are being modified) at the time +libbb is compiled. +This patch avoids this scenario by building libbb as the last directory. + +Upstream-Status: Submitted +Signed-off-by: Juro Bystricky + +Index: busybox-1.24.1/Makefile +=================================================================== +diff --git a/Makefile b/Makefile +index 5cfc763..69f3831 100644 +--- a/Makefile ++++ b/Makefile +@@ -738,9 +738,18 @@ $(sort $(busybox-all)): $(busybox-dirs) ; + # Error messages still appears in the original language + + PHONY += $(busybox-dirs) +-$(busybox-dirs): prepare scripts ++ ++libbb-dir = $(filter libbb,$(busybox-dirs)) ++busybox-dirs1 = $(filter-out libbb,$(busybox-dirs)) ++ ++$(busybox-dirs1): prepare scripts + $(Q)$(MAKE) $(build)=$@ + ++ifneq ($(libbb-dir),) ++$(libbb-dir): | $(busybox-dirs1) ++ $(Q)$(MAKE) $(build)=$@ ++endif ++ + # Build the kernel release string + # The KERNELRELEASE is stored in a file named .kernelrelease + # to be used when executing for example make install or make modules_install -- cgit 1.2.3-korg