From patchwork Fri Nov 17 22:19:23 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lewis Hyatt X-Patchwork-Id: 1865296 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=j3BR+3Hm; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4SXBCp62VQz1yS4 for ; Sat, 18 Nov 2023 09:19:48 +1100 (AEDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id CB924385840A for ; Fri, 17 Nov 2023 22:19:45 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-qv1-xf34.google.com (mail-qv1-xf34.google.com [IPv6:2607:f8b0:4864:20::f34]) by sourceware.org (Postfix) with ESMTPS id C32103858D32 for ; Fri, 17 Nov 2023 22:19:33 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org C32103858D32 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org C32103858D32 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::f34 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1700259575; cv=none; b=XZyY2B2ZGeOCz5sYUVixj4oYNHvu3+qrRtZ+qisKyzUijTagT599tY9fGWTNgBGOs/NVTurHL7bFvg+1io3QUJ5GRtUQCymxHr0Od+TxK1HQbNJ11b0sL6EzKrHXTtHfzaw8jecBBvYCE+LJralsSPfrCKHFPXYpCjby/BU/kZM= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1700259575; c=relaxed/simple; bh=pciZQ5VIkWCQNx0ld+R2iyTO5NWAWYqTvz1DvN4TnQY=; h=DKIM-Signature:From:To:Subject:Date:Message-Id:MIME-Version; b=cRKGSFCh23viRYLgtw7f/tTk4CJ2ak3H7pb6Lpg8jBNxlF0ABKDEs1oC21W6NibY0JG0gMzEiv8VHOdeI8x7wM8vNj1plsiUfbHKdIjLUJ6aVvxUxTx2v+mJm/mgWprf4aamjpbP0IBfjKGOg1d91JI8EZM8rNAXq6bVmhXC5PY= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-qv1-xf34.google.com with SMTP id 6a1803df08f44-671357f0209so14405556d6.0 for ; Fri, 17 Nov 2023 14:19:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700259572; x=1700864372; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=hs/405QfKDb6rIdb5jbrFSq1Sa3cLmdouXRL1LSBHg4=; b=j3BR+3HmxqgZMIxfyVhx/sdChDlk/6i1LQfNBcfihVKfJzPe+uYFVQ+fp0pRk+8IIP DNh2ucdGchn+EMaergxKaLc+2/OHcbnDcfwSfwwlXZQi5z2Bs7cNzzZ9YF7AzEbS2dze A5RpWEVvFZ2Muquv/881JK6rszqNDogSrrhgUD5UCgT9gSgAz43qCoRAjP6iZVzGhrEn InljdTPpyQ777YBfPuKci2bx+uG6TagXYfgdKrldTB3LhulhWQTSNoWFFxVRBITNKXPA x+yzJaj9WlgKeVzP/L7GXKhWR70Eq3ZKaEMce/HHceJM9HGRkzz4WJZPxsLlSyi0aFQi Ow7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700259572; x=1700864372; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=hs/405QfKDb6rIdb5jbrFSq1Sa3cLmdouXRL1LSBHg4=; b=qOnxG207J4B/TYegnmbx9FQoyBpS7N330oG/8z5XJ7latkANbaRuRmom1nWV1NVVPt OqIcoUGAJ97muP5GoCQNmuX2yB2PXrDo8mlJyaBdbitrNqiU2tcx3CuQ5uaUZj+xxgrv a/TxaZJ64jj2HaZl7egusLROsA6ZELufaSZQPNh8kIWtJbDFFrvA1oYObhrochtCoETv YVKTBIww0u7n3Wywk49HaZeHDaMAjkQdZiimiNC7SQxryXeYFkzIEgkpD+w4Or0RIvf3 EZuO7zVpGa9TnXshZOt/UH93nNJ8jCWS/qSPb0q2zkFkXX1vqb0iZFMdAB1f9ycjT9Uv A8HA== X-Gm-Message-State: AOJu0YyGy7cj0TgEDlwYtItgx/tm0DmJhk1Ef5ffg+j8UtaEaUmfmztv ekcsnk1H4lpcjT7LXC16GLWVEz47SvM= X-Google-Smtp-Source: AGHT+IGdSF13bvV6ZB9Cd/n067fbIRo74XeChrDXWgYTic/JZyoncC8+N09LBBAaCKFcfA4fbsNArg== X-Received: by 2002:a05:6214:2401:b0:66d:65a9:8a17 with SMTP id fv1-20020a056214240100b0066d65a98a17mr452550qvb.2.1700259572051; Fri, 17 Nov 2023 14:19:32 -0800 (PST) Received: from localhost.localdomain (96-67-140-173-static.hfc.comcastbusiness.net. [96.67.140.173]) by smtp.gmail.com with ESMTPSA id lw12-20020a05621457cc00b0065b02eaeee7sm943594qvb.83.2023.11.17.14.19.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Nov 2023 14:19:31 -0800 (PST) From: Lewis Hyatt To: gcc-patches@gcc.gnu.org Cc: Lewis Hyatt Subject: [PATCH] Makefile.tpl: Avoid race condition in generating site.exp from the top level Date: Fri, 17 Nov 2023 17:19:23 -0500 Message-Id: <20231117221923.2751146-1-lhyatt@gmail.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 X-Spam-Status: No, score=-3038.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org Hello- I often find it convenient to run a new c-c++-common test from the main build dir like: $ make -j 2 RUNTESTFLAGS=dg.exp=new-test.c check-gcc-{c,c++} I noticed that sometimes this produces a corrupted site.exp and then no tests work until it is remade manually. To avoid the issue, it is necessary to do "cd gcc; make site.exp" before running a parallel make from the top level directory. The below patch fixes it by just making that dependency on site.exp explicit in the top level Makefile. Is it OK please? Thanks... -Lewis -- >8 -- A command like "make -j 2 check-gcc-c check-gcc-c++" run in the top level of a fresh build directory does not work reliably. That will spawn two independent make processes inside the "gcc" directory, and each of those will attempt to create site.exp if it doesn't exist and will interfere with each other, producing often a corrupted or empty site.exp. Resolve that by making these targets depend on a new phony target which makes sure site.exp is created first before starting the recursive makes. ChangeLog: * Makefile.in: Regenerate. * Makefile.tpl: Add dependency on site.exp to check-gcc-* targets --- Makefile.in | 30 +++++++++++++++++++----------- Makefile.tpl | 10 +++++++++- 2 files changed, 28 insertions(+), 12 deletions(-) diff --git a/Makefile.tpl b/Makefile.tpl index 8b7783bb4f1..6e22adecd2f 100644 --- a/Makefile.tpl +++ b/Makefile.tpl @@ -1639,9 +1639,17 @@ cross: all-build all-gas all-ld @endif gcc-no-bootstrap @if gcc + +.PHONY: gcc-site.exp +gcc-site.exp: + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) site.exp); + [+ FOR languages +] .PHONY: check-gcc-[+language+] check-[+language+] -check-gcc-[+language+]: +check-gcc-[+language+]: gcc-site.exp r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ diff --git a/Makefile.in b/Makefile.in index b65ab4953bc..da2344b3f3d 100644 --- a/Makefile.in +++ b/Makefile.in @@ -62200,8 +62200,16 @@ cross: all-build all-gas all-ld @if gcc +.PHONY: gcc-site.exp +gcc-site.exp: + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) site.exp); + + .PHONY: check-gcc-c check-c -check-gcc-c: +check-gcc-c: gcc-site.exp r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ @@ -62209,7 +62217,7 @@ check-gcc-c: check-c: check-gcc-c .PHONY: check-gcc-c++ check-c++ -check-gcc-c++: +check-gcc-c++: gcc-site.exp r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ @@ -62217,7 +62225,7 @@ check-gcc-c++: check-c++: check-gcc-c++ check-target-libstdc++-v3 check-target-libitm-c++ check-target-libgomp-c++ .PHONY: check-gcc-fortran check-fortran -check-gcc-fortran: +check-gcc-fortran: gcc-site.exp r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ @@ -62225,7 +62233,7 @@ check-gcc-fortran: check-fortran: check-gcc-fortran check-target-libquadmath check-target-libgfortran check-target-libgomp-fortran .PHONY: check-gcc-ada check-ada -check-gcc-ada: +check-gcc-ada: gcc-site.exp r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ @@ -62233,7 +62241,7 @@ check-gcc-ada: check-ada: check-gcc-ada check-target-libada .PHONY: check-gcc-objc check-objc -check-gcc-objc: +check-gcc-objc: gcc-site.exp r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ @@ -62241,7 +62249,7 @@ check-gcc-objc: check-objc: check-gcc-objc check-target-libobjc .PHONY: check-gcc-obj-c++ check-obj-c++ -check-gcc-obj-c++: +check-gcc-obj-c++: gcc-site.exp r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ @@ -62249,7 +62257,7 @@ check-gcc-obj-c++: check-obj-c++: check-gcc-obj-c++ .PHONY: check-gcc-go check-go -check-gcc-go: +check-gcc-go: gcc-site.exp r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ @@ -62257,7 +62265,7 @@ check-gcc-go: check-go: check-gcc-go check-target-libgo check-gotools .PHONY: check-gcc-m2 check-m2 -check-gcc-m2: +check-gcc-m2: gcc-site.exp r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ @@ -62265,7 +62273,7 @@ check-gcc-m2: check-m2: check-gcc-m2 check-target-libgm2 .PHONY: check-gcc-d check-d -check-gcc-d: +check-gcc-d: gcc-site.exp r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ @@ -62273,7 +62281,7 @@ check-gcc-d: check-d: check-gcc-d check-target-libphobos .PHONY: check-gcc-jit check-jit -check-gcc-jit: +check-gcc-jit: gcc-site.exp r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ @@ -62281,7 +62289,7 @@ check-gcc-jit: check-jit: check-gcc-jit .PHONY: check-gcc-rust check-rust -check-gcc-rust: +check-gcc-rust: gcc-site.exp r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \