From patchwork Sat May 2 18:15:04 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luca Ceresoli X-Patchwork-Id: 1281730 Return-Path: X-Original-To: incoming-buildroot@patchwork.ozlabs.org Delivered-To: patchwork-incoming-buildroot@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=busybox.net (client-ip=140.211.166.133; helo=hemlock.osuosl.org; envelope-from=buildroot-bounces@busybox.net; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=lucaceresoli.net Received: from hemlock.osuosl.org (smtp2.osuosl.org [140.211.166.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 49Dy382RcBz9sRY for ; Sun, 3 May 2020 04:15:31 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by hemlock.osuosl.org (Postfix) with ESMTP id 4DF4B87E8A; Sat, 2 May 2020 18:15:29 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from hemlock.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id mVdlDSrN9dOB; Sat, 2 May 2020 18:15:27 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by hemlock.osuosl.org (Postfix) with ESMTP id C1C4E87BB1; Sat, 2 May 2020 18:15:27 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136]) by ash.osuosl.org (Postfix) with ESMTP id A8DDA1BF239 for ; Sat, 2 May 2020 18:15:26 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by silver.osuosl.org (Postfix) with ESMTP id 977EE20368 for ; Sat, 2 May 2020 18:15:26 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from silver.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id mwyMkfaKYSpP for ; Sat, 2 May 2020 18:15:25 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from hostingweb31-40.netsons.net (hostingweb31-40.netsons.net [89.40.174.40]) by silver.osuosl.org (Postfix) with ESMTPS id C857920022 for ; Sat, 2 May 2020 18:15:24 +0000 (UTC) Received: from [109.168.11.45] (port=37142 helo=pc-ceresoli.dev.aim) by hostingweb31.netsons.net with esmtpa (Exim 4.93) (envelope-from ) id 1jUwfZ-0014SW-GM; Sat, 02 May 2020 20:15:21 +0200 From: Luca Ceresoli To: buildroot@buildroot.org Date: Sat, 2 May 2020 20:15:04 +0200 Message-Id: <20200502181504.28690-1-luca@lucaceresoli.net> X-Mailer: git-send-email 2.26.2 MIME-Version: 1.0 X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - hostingweb31.netsons.net X-AntiAbuse: Original Domain - buildroot.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - lucaceresoli.net X-Get-Message-Sender-Via: hostingweb31.netsons.net: authenticated_id: luca+lucaceresoli.net/only user confirmed/virtual account not confirmed X-Authenticated-Sender: hostingweb31.netsons.net: luca@lucaceresoli.net X-Source: X-Source-Args: X-Source-Dir: Subject: [Buildroot] [PATCH] package/exim: fix parallel build X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Luca Ceresoli Errors-To: buildroot-bounces@busybox.net Sender: "buildroot" exim does build in parallel correctly, but has a concurrency bug in generating version info files which happens either in the build step or in the install step. Add a patch to fix the bug. Fixes: http://autobuild.buildroot.net/results/ebf/ebfccad007e216564889645a07f5487747116331// http://autobuild.buildroot.net/results/56a/56a8457efcb32579ad6da99a769b6438dd0db267// http://autobuild.buildroot.net/results/6a1/6a1f8a352649baf767b094cb6bbe2a7397fa7fac// http://autobuild.buildroot.net/results/5ed/5ed1c42b3d33198f32d1267e5cc2b1fa1211495a// http://autobuild.buildroot.net/results/b30/b304569948fd481ce33ecd052a1036153c5d459e// http://autobuild.buildroot.net/results/d2c/d2c7abfe08672e53ff890127f787f8d2e84860f4// Signed-off-by: Luca Ceresoli --- I cannot test that this is really a fix since I never was able to reproduce the problem locally. However I could easily check that the reversion script is actually executed twice. The timing of these executions can cause errors like the one found by the autobuilders. Thus I'm reasonably sure this commit fixes a bug. --- ...x-version.-h-sh-generation-with-para.patch | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 package/exim/0007-Makefile-Base-fix-version.-h-sh-generation-with-para.patch diff --git a/package/exim/0007-Makefile-Base-fix-version.-h-sh-generation-with-para.patch b/package/exim/0007-Makefile-Base-fix-version.-h-sh-generation-with-para.patch new file mode 100644 index 000000000000..e97bd78a6ae1 --- /dev/null +++ b/package/exim/0007-Makefile-Base-fix-version.-h-sh-generation-with-para.patch @@ -0,0 +1,84 @@ +From 19f6e36d3473ddba1a211e7af9352a10febb7270 Mon Sep 17 00:00:00 2001 +From: Luca Ceresoli +Date: Fri, 1 May 2020 16:27:48 +0200 +Subject: [PATCH] Makefile-Base: fix version.{h,sh} generation with parallel + build + +When using parallel make (make -j) the build sometimes fails either +during 'make' or during 'make install'. + +Error messages look either like: + + make[1]: Entering directory '/home/buildroot/autobuild/instance-2/output-1/build/exim-4.93.0.4' + /bin/sh scripts/source_checks + `Makefile' is up to date. + + make[2]: Entering directory '/home/buildroot/autobuild/instance-2/output-1/build/exim-4.93.0.4/build-br' + /bin/sh ../scripts/Configure-os.c + ../scripts/reversion: Your copy of Exim lacks any version information. + Makefile:785: recipe for target 'version.sh' failed + +or like: + + DESTDIR=/home/buildroot/autobuild/instance-2/output-1/target INSTALL_ARG="-no_chown -no_symlink" build=br /usr/bin/make -j4 -C /home/buildroot/autobuild/instance-2/output-1/build/exim-4.93.0.4 CFLAGS="-std=c99 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os " install + make[1]: Entering directory '/home/buildroot/autobuild/instance-2/output-1/build/exim-4.93.0.4' + /bin/sh scripts/source_checks + `Makefile' is up to date. + + make[2]: Entering directory '/home/buildroot/autobuild/instance-2/output-1/build/exim-4.93.0.4/build-br' + /home/buildroot/autobuild/instance-2/output-1/host/bin/i586-linux-gcc version.c + version.c: In function 'version_init': + version.c:32:1: error: expected expression before ';' token + ; + ^ + +This is due to the rule: + + version.h version.sh:: + @../scripts/reversion + +that executes reversion twice, once to satisfy the version.h target and +once for version.sh. This is unnecessary because reversion generates both +files anyway, but harmless without parallel build. When using parallel make +however reversion is sporadically run in a time sequence such that the +generated files are being used by other rules while they are being +rewritten by the second reversion instance. + +Fix by making only one of the two targets run reversion, and the other one +depend on it. + +Fixes builds found by the Buildroot autobuilders: + http://autobuild.buildroot.net/results/ebf/ebfccad007e216564889645a07f5487747116331// + http://autobuild.buildroot.net/results/56a/56a8457efcb32579ad6da99a769b6438dd0db267// + http://autobuild.buildroot.net/results/6a1/6a1f8a352649baf767b094cb6bbe2a7397fa7fac// + http://autobuild.buildroot.net/results/5ed/5ed1c42b3d33198f32d1267e5cc2b1fa1211495a// + http://autobuild.buildroot.net/results/b30/b304569948fd481ce33ecd052a1036153c5d459e// + http://autobuild.buildroot.net/results/d2c/d2c7abfe08672e53ff890127f787f8d2e84860f4// + +Signed-off-by: Luca Ceresoli +Upstream-status: patch submitted (https://bugs.exim.org/show_bug.cgi?id=2566) + +--- + OS/Makefile-Base | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/OS/Makefile-Base b/OS/Makefile-Base +index b66678bee4de..4966c25b5359 100644 +--- a/OS/Makefile-Base ++++ b/OS/Makefile-Base +@@ -664,9 +664,11 @@ PHDRS = ../config.h \ + + # Update Exim's version information and build the version object. + +-version.h version.sh:: ++version.sh:: + @../scripts/reversion + ++version.h: version.sh ++ + cnumber.h: version.h + + version.o: $(HDRS) cnumber.h version.h version.c +-- +2.26.2 +