From patchwork Wed Nov 17 10:20:00 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12624293 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B2512C433F5 for ; Wed, 17 Nov 2021 10:20:30 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 9560A61BF8 for ; Wed, 17 Nov 2021 10:20:30 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236201AbhKQKX2 (ORCPT ); Wed, 17 Nov 2021 05:23:28 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56398 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232776AbhKQKX0 (ORCPT ); Wed, 17 Nov 2021 05:23:26 -0500 Received: from mail-wm1-x329.google.com (mail-wm1-x329.google.com [IPv6:2a00:1450:4864:20::329]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9F547C061570 for ; Wed, 17 Nov 2021 02:20:27 -0800 (PST) Received: by mail-wm1-x329.google.com with SMTP id b184-20020a1c1bc1000000b0033140bf8dd5so1648482wmb.5 for ; Wed, 17 Nov 2021 02:20:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=40S6S/BMOHW3QtyzgL7+16+Y+ocb6rw3M1oaASEmn4A=; b=NtnsB2cJ2pN73Xmrfom+NeSSlyM6KGr8hhq/qvBQRQOQKaJyOHMpgJuoLr4B9OezAI Z1FJ301OAb5vRh6HDY6atSQWRYMwGERa//P+Q8EpDHYvW2SlqoC3ZSMTSErwWy6uoXTR UDU4p1LuN/Dir8lvEiEzQD7THMZxIZE7oY98bicR1t6e809ZaI0Q9NvdPbym8XITmIhQ PPIsMsznSf10vUVE76+hvRdZ+3Vhb83aeUnrNC/QBWIaA0eogwnlakGF9eo93ypO1Vsu VODkAcFxzwQDE1Pjo8uTJnASGKN9QRx6jjLe8rNKgrPvY4RY/mIXHcXVW6QOoDhqueqz cz6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=40S6S/BMOHW3QtyzgL7+16+Y+ocb6rw3M1oaASEmn4A=; b=jFPLkBuap5cloqUhutFOSLNCCR9bL3a6k8pvkJPKhq4hQWUbJyLTP79FfQMq4XZdJv uQow6qdly1y17tBTXuGqKNrXPQ+OcXo5sLGpD5kxuwJG7bJ/urEpATCVntc+LCu8E1HV Rwc5P8Nte9Rt0z/uuFrhqRV/v9+V5Bb71ccBDQLNkFAJw7N/yYewcewrSHZjJKdX47lW rwQLOeH10xZReMA0V0LssQDlB+uoh3zhlIL4QAP+/Bk+XP/YcnSsbaj1i/yCm3C3/7Qn 1atUy6YlXDf6dPd4poxfWtEI1d1ClRbCg7t36wfhaS8X++7+Am8a8O8ac3JbfVAk94RJ 9SIw== X-Gm-Message-State: AOAM533jTCDi3PUGLfR9YYc1BHdOFxO2YKPg/eCdRiskxk6zQ3yD5vwU diBtKvAE5K9eEqlGx6AplDZ+gYgXUbrKeA== X-Google-Smtp-Source: ABdhPJyOiw/WZQ0oy4REks14WMJjxHehU54phJqxEBFQh0F4iP6TC4SW0QuQJ7GRR4KwsQ/oFHtlsw== X-Received: by 2002:a05:600c:4ed2:: with SMTP id g18mr75654199wmq.18.1637144425982; Wed, 17 Nov 2021 02:20:25 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id n32sm6456256wms.1.2021.11.17.02.20.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Nov 2021 02:20:25 -0800 (PST) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Phillip Wood , Jeff King , Dan Jacques , Eric Wong , Jonathan Nieder , Mike Hommey , =?utf-8?b?xJBvw6BuIFRy4bqnbiBDw7RuZyBEYW5o?= , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= Subject: [PATCH v4 01/23] Makefile: don't invoke msgfmt with --statistics Date: Wed, 17 Nov 2021 11:20:00 +0100 Message-Id: X-Mailer: git-send-email 2.34.0.796.g2c87ed6146a In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Remove the --statistics flag that I added in 5e9637c6297 (i18n: add infrastructure for translating Git with gettext, 2011-11-18). Our Makefile output is good about reducing verbosity by default, except in this case: $ rm -rf po/build/locale/e*; time make -j $(nproc) all SUBDIR templates MKDIR -p po/build/locale/el/LC_MESSAGES MSGFMT po/build/locale/el/LC_MESSAGES/git.mo MKDIR -p po/build/locale/es/LC_MESSAGES MSGFMT po/build/locale/es/LC_MESSAGES/git.mo 1038 translated messages, 3325 untranslated messages. 5230 translated messages. I didn't have any good reason for using --statistics at the time other than ad-hoc eyeballing of the output. We don't need to spew out exactly how many messages we've got translated every time. Now we'll instead emit: $ rm -rf po/build/locale/e*; time make -j $(nproc) all SUBDIR templates MKDIR -p po/build/locale/el/LC_MESSAGES MSGFMT po/build/locale/el/LC_MESSAGES/git.mo MKDIR -p po/build/locale/es/LC_MESSAGES MSGFMT po/build/locale/es/LC_MESSAGES/git.mo Signed-off-by: Ævar Arnfjörð Bjarmason --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index d56c0e4aadc..11da97de233 100644 --- a/Makefile +++ b/Makefile @@ -1870,7 +1870,7 @@ ifdef GIT_TEST_CMP_USE_COPIED_CONTEXT endif ifndef NO_MSGFMT_EXTENDED_OPTIONS - MSGFMT += --check --statistics + MSGFMT += --check endif ifdef HAVE_CLOCK_GETTIME From patchwork Wed Nov 17 10:20:01 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12624295 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1E471C433EF for ; Wed, 17 Nov 2021 10:20:32 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 018AA61BF8 for ; Wed, 17 Nov 2021 10:20:31 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236209AbhKQKX2 (ORCPT ); Wed, 17 Nov 2021 05:23:28 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56406 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236203AbhKQKX1 (ORCPT ); Wed, 17 Nov 2021 05:23:27 -0500 Received: from mail-wr1-x42a.google.com (mail-wr1-x42a.google.com [IPv6:2a00:1450:4864:20::42a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 91FB6C061746 for ; Wed, 17 Nov 2021 02:20:28 -0800 (PST) Received: by mail-wr1-x42a.google.com with SMTP id s13so3636012wrb.3 for ; Wed, 17 Nov 2021 02:20:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=4j11wb869VxLpE5VDq64Jfl0O4y9O1lNegrbfopaWbo=; b=IytQpIWfMOV7QIUN5pbet16deDVsWNt23VK7NdLPHL8WmKNRCSJ9BHV+Zm62vaQyxb 9hkre4t+edEC/EEKcyrgLRenTey/NXOC0tiECCa9Ea3hB3KQ35sowmy3xs0BDfbMNXh2 DOzinadt+DioXBQlgUFpIJAiuAkyOXhTg3F5NiTs2OdUh4Kc/cb84QZkEemERmIJyAW6 z4N7okgYT7TBH3tb0sysx/Jy5Hfbe7Je0V1iayag4tGqCNSfJ3Cp1D9ZEANOR08LmaDM pFBYFSjRx8gCHzChT10BvcJSHZOvsoiIoHPvCi5wIswZhSgROpsMAt0d3GExKlfC0PrB mYQA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=4j11wb869VxLpE5VDq64Jfl0O4y9O1lNegrbfopaWbo=; b=Ewwe9dQBj/bVDvYbtb18V9ZRxSEvzXFa0nl/dJJCTAZJgJW5e5gAT2ihIeaz6qFJsH QTkmCSsKzJJ1NnfWYXQmw2LjNsqbFqadJyHjTS7KySPb9wf8iE35IGmFT9kCjS3/NoS/ mW40AJ2pSpxOV7OiFg3SVYZjQWoa8xRiiiQGYYnxxuIfN8Ksfw0kMZUaIzjVlYzrqjHf nfCMNu/Y7BQ0fQ09wiokdRlqz1FtnJSR1/IX9FGXPGywllvxI+2o1ehliFN+rQv6HhEy WgvjQT0itIMptI8bU8RNDbeh2V/KgjJ74CZHgH3AKg9swzLh+HZxhFewWussap/SgXJ+ 8wvw== X-Gm-Message-State: AOAM530XJTVAKAxz6XkFgXqVoYEedPcEAoEPs5GAYiPDW1hErJmWKkoC Z3jwS8367rNMN7ZeDkO8bXxx0gJdxLGe9Q== X-Google-Smtp-Source: ABdhPJzb/OwPWOmL8U+PqnZvO2tYIB9/UPvkagb2HfcqnXXv6d1yoPCEuGV95Lr5LRLO8ZzO2mZK9g== X-Received: by 2002:a5d:6c67:: with SMTP id r7mr19099909wrz.286.1637144426877; Wed, 17 Nov 2021 02:20:26 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id n32sm6456256wms.1.2021.11.17.02.20.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Nov 2021 02:20:26 -0800 (PST) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Phillip Wood , Jeff King , Dan Jacques , Eric Wong , Jonathan Nieder , Mike Hommey , =?utf-8?b?xJBvw6BuIFRy4bqnbiBDw7RuZyBEYW5o?= , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= Subject: [PATCH v4 02/23] Makefile: don't set up "perl/build" rules under NO_PERL=Y Date: Wed, 17 Nov 2021 11:20:01 +0100 Message-Id: X-Mailer: git-send-email 2.34.0.796.g2c87ed6146a In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Do not define LIB_{PERL,CPAN}{,_GEN} if NO_PERL is defined. This changes no functionality, but makes it clear which of these rules are needed under NO_PERL=Y. See 20d2a30f8ff (Makefile: replace perl/Makefile.PL with simple make rules, 2017-12-10) for the initial implementation. We do for better or worse rely on "install-doc" calling "install-man-perl" regardless of whether NO_PERL=Y is defined or not, i.e. we'll always end up with that manual page, even if we don't have any of the Perl code installed. Let's add a comment about that adjacent to the rules that build perl/build. Signed-off-by: Ævar Arnfjörð Bjarmason --- Makefile | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/Makefile b/Makefile index 11da97de233..06405825a24 100644 --- a/Makefile +++ b/Makefile @@ -2684,19 +2684,12 @@ endif po/build/locale/%/LC_MESSAGES/git.mo: po/%.po $(QUIET_MSGFMT)mkdir -p $(dir $@) && $(MSGFMT) -o $@ $< +ifndef NO_PERL LIB_PERL := $(wildcard perl/Git.pm perl/Git/*.pm perl/Git/*/*.pm perl/Git/*/*/*.pm) LIB_PERL_GEN := $(patsubst perl/%.pm,perl/build/lib/%.pm,$(LIB_PERL)) LIB_CPAN := $(wildcard perl/FromCPAN/*.pm perl/FromCPAN/*/*.pm) LIB_CPAN_GEN := $(patsubst perl/%.pm,perl/build/lib/%.pm,$(LIB_CPAN)) -ifndef NO_PERL -all:: $(LIB_PERL_GEN) -ifndef NO_PERL_CPAN_FALLBACKS -all:: $(LIB_CPAN_GEN) -endif -NO_PERL_CPAN_FALLBACKS_SQ = $(subst ','\'',$(NO_PERL_CPAN_FALLBACKS)) -endif - perl/build/lib/%.pm: perl/%.pm GIT-PERL-DEFINES $(QUIET_GEN)mkdir -p $(dir $@) && \ sed -e 's|@@LOCALEDIR@@|$(perl_localedir_SQ)|g' \ @@ -2704,6 +2697,14 @@ perl/build/lib/%.pm: perl/%.pm GIT-PERL-DEFINES -e 's|@@NO_PERL_CPAN_FALLBACKS@@|$(NO_PERL_CPAN_FALLBACKS_SQ)|g' \ < $< > $@ +all:: $(LIB_PERL_GEN) +ifndef NO_PERL_CPAN_FALLBACKS +all:: $(LIB_CPAN_GEN) +endif +NO_PERL_CPAN_FALLBACKS_SQ = $(subst ','\'',$(NO_PERL_CPAN_FALLBACKS)) +endif + +# install-man depends on Git.3pm even with NO_PERL=Y perl/build/man/man3/Git.3pm: perl/Git.pm $(QUIET_GEN)mkdir -p $(dir $@) && \ pod2man $< $@ From patchwork Wed Nov 17 10:20:02 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12624297 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id BE9B1C433F5 for ; Wed, 17 Nov 2021 10:20:33 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 6E90661C32 for ; Wed, 17 Nov 2021 10:20:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236221AbhKQKXa (ORCPT ); Wed, 17 Nov 2021 05:23:30 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56408 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236207AbhKQKX1 (ORCPT ); Wed, 17 Nov 2021 05:23:27 -0500 Received: from mail-wr1-x429.google.com (mail-wr1-x429.google.com [IPv6:2a00:1450:4864:20::429]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 64DA3C061570 for ; Wed, 17 Nov 2021 02:20:29 -0800 (PST) Received: by mail-wr1-x429.google.com with SMTP id n29so3565732wra.11 for ; Wed, 17 Nov 2021 02:20:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=KsXeXYStWobVGpsANde1O0jZf70fvS8R5zlqcXXAs3g=; b=GFzlOzFRyI9HH5+wcSvudlXLcjhgWjTkki99jLU/M72PEhzm+L9bnFN/aUC77SnULG FVfr+4iQaxbbZn6m9l4iDVcmaYJP/4ukWltafGaPK7+Jxf9fJpVQdP7YLpMZFT5MP+L3 J98GQ4gk3g/Whcm7Npp17nJwzY7XhDqpCyftuxrjpbHKFgb0guEFJfWoio1ruYtBpmH6 pB13SkcFJQVnNwfOM21HQDLsO3qtVhYvhgFOJ3kfjdP/V6GgJcIO0ihvFLpJpCSA84LB APz1FuD37tu4govQaMgTKMKQNVrCmVMSBq7n1DFseGRYmz51yCcQ+vviW463k7Q0TRge 28Wg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=KsXeXYStWobVGpsANde1O0jZf70fvS8R5zlqcXXAs3g=; b=YFpSk6JYWmcPA68aK835yMYoDp78GrPQfKJhtME4qjiFOXFJhoulMhBZY3th6d/yDs 4TnJO+0i+9pcgtAujh2ouOs+M/19DuNas0nLOdRNa3awOkb/1i5K2RKoDrN3P+JlQm4t VRJtHIzwhyNTAJb3jKf0UwL/VHBbKE4WHtwuC2GV7b4LFROKi3qTHTaWfZBwzuZDRWdS PVTvH3j5Bpnx8EjlMx/gXtQM93ZUAJthdM68gfczA1p1zQla9RV7EoOQ7FVsFPXrkg8S /rolR4+vssD1bLRadaadaXqOYIGfBFN/Ho+VjbfjXp3cB7k6SzJCLenmOhidXhRvHubt aDHQ== X-Gm-Message-State: AOAM531vQZuvuFXoR8QrBpfc9F8qZnaPAQeXgEFzAswXJfNVYRdpxQAp dOdGIj95P5hFu7A250SiQN5eHyKcsvfcuQ== X-Google-Smtp-Source: ABdhPJyIOZbEydTvApnjoXR3rU4IRRuq4xlEQKqpatoSjahqH9sS6Fev9REqGjLjL3vk3X/ms6fvAg== X-Received: by 2002:a5d:648e:: with SMTP id o14mr18844305wri.69.1637144427706; Wed, 17 Nov 2021 02:20:27 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id n32sm6456256wms.1.2021.11.17.02.20.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Nov 2021 02:20:27 -0800 (PST) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Phillip Wood , Jeff King , Dan Jacques , Eric Wong , Jonathan Nieder , Mike Hommey , =?utf-8?b?xJBvw6BuIFRy4bqnbiBDw7RuZyBEYW5o?= , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= Subject: [PATCH v4 03/23] Makefile: use "=" not ":=" for po/* and perl/* Date: Wed, 17 Nov 2021 11:20:02 +0100 Message-Id: X-Mailer: git-send-email 2.34.0.796.g2c87ed6146a In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Change these variable definitions from being simply-expanded to be recursively expanded instead. I.e. they'll be lazily expanded when used. I added these in 5e9637c6297 (i18n: add infrastructure for translating Git with gettext, 2011-11-18) and 20d2a30f8ff (Makefile: replace perl/Makefile.PL with simple make rules, 2017-12-10), the reason for using ":=" over "=" was that I didn't know the difference in 2011 (I think I copied some POC code), and in 2017 I used the 2011 commit for reference. This doesn't make much if any of a practical difference, doing this is cheap either way, but as simply-expanded variables in our Makefile generally indicate special behavior (e.g. making a copy now, and modifying the RHS later) let's change these to show that nothing odd is going on here). Signed-off-by: Ævar Arnfjörð Bjarmason --- Makefile | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Makefile b/Makefile index 06405825a24..6b77702e102 100644 --- a/Makefile +++ b/Makefile @@ -2672,11 +2672,11 @@ po/git.pot: $(GENERATED_H) FORCE pot: po/git.pot ifdef NO_GETTEXT -POFILES := -MOFILES := +POFILES = +MOFILES = else -POFILES := $(wildcard po/*.po) -MOFILES := $(patsubst po/%.po,po/build/locale/%/LC_MESSAGES/git.mo,$(POFILES)) +POFILES = $(wildcard po/*.po) +MOFILES = $(patsubst po/%.po,po/build/locale/%/LC_MESSAGES/git.mo,$(POFILES)) all:: $(MOFILES) endif @@ -2685,10 +2685,10 @@ po/build/locale/%/LC_MESSAGES/git.mo: po/%.po $(QUIET_MSGFMT)mkdir -p $(dir $@) && $(MSGFMT) -o $@ $< ifndef NO_PERL -LIB_PERL := $(wildcard perl/Git.pm perl/Git/*.pm perl/Git/*/*.pm perl/Git/*/*/*.pm) -LIB_PERL_GEN := $(patsubst perl/%.pm,perl/build/lib/%.pm,$(LIB_PERL)) -LIB_CPAN := $(wildcard perl/FromCPAN/*.pm perl/FromCPAN/*/*.pm) -LIB_CPAN_GEN := $(patsubst perl/%.pm,perl/build/lib/%.pm,$(LIB_CPAN)) +LIB_PERL = $(wildcard perl/Git.pm perl/Git/*.pm perl/Git/*/*.pm perl/Git/*/*/*.pm) +LIB_PERL_GEN = $(patsubst perl/%.pm,perl/build/lib/%.pm,$(LIB_PERL)) +LIB_CPAN = $(wildcard perl/FromCPAN/*.pm perl/FromCPAN/*/*.pm) +LIB_CPAN_GEN = $(patsubst perl/%.pm,perl/build/lib/%.pm,$(LIB_CPAN)) perl/build/lib/%.pm: perl/%.pm GIT-PERL-DEFINES $(QUIET_GEN)mkdir -p $(dir $@) && \ From patchwork Wed Nov 17 10:20:03 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12624299 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 69A82C433F5 for ; Wed, 17 Nov 2021 10:20:38 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 4A8D561BF9 for ; Wed, 17 Nov 2021 10:20:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236216AbhKQKXf (ORCPT ); Wed, 17 Nov 2021 05:23:35 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56414 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236210AbhKQKX2 (ORCPT ); Wed, 17 Nov 2021 05:23:28 -0500 Received: from mail-wm1-x32c.google.com (mail-wm1-x32c.google.com [IPv6:2a00:1450:4864:20::32c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 49EA4C061570 for ; Wed, 17 Nov 2021 02:20:30 -0800 (PST) Received: by mail-wm1-x32c.google.com with SMTP id c71-20020a1c9a4a000000b0032cdcc8cbafso1661334wme.3 for ; Wed, 17 Nov 2021 02:20:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=yIkoM4mF9N24o4kZ60pVMbwxCYGMKPNaAdM30H2rKFA=; b=TzE+9z6crobZTRvWCJsm98x6guYu7uySHM+MnyNO4vllITk/THUgaTdW0o1tgJpIqK 7UBytsqUBF1XPQoJT6+sXjkTPlRfT8CF41eFmXJiZ3QkO+k8qo5RwOGknpEdiDm/6suD KaGKgcTqufCylksd5IAocRO5UGkmxqgcvAIjWmjGfjHHk0OXK9lyuGJslEpaXjJeu3Gd AlRL5DkvJuBkySYNBBYqra5K9KDga5sC/T2q9wsXHiyjum1ZtjGL17LjBWcq9rNVvVwW jrhcxBD7WXNC8RHOhAOg1ssLAHG92UvqslnTE579Bm0zY+AIHjvUOeEOXvLXPtciWdgI BS2A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=yIkoM4mF9N24o4kZ60pVMbwxCYGMKPNaAdM30H2rKFA=; b=jOGtp8Y9R1agQHSjydD+upQ+9Uq0w2zqp7r/CqVqtdhBF+QTsfFX80i6UQGG2sej/D WXAGBgyr9+I747Fg1cErgTXzsRbctQxaUTUWf6XKdt5h9m361st9a7p/WKpp1E4RiNjy pOMKtkIOG35MQAE3/i0Spet4et6eO1pJnYwUiBAOEFAIbLorP3dbaR5KV0J5qgh7sN28 z7De3aetEXrQVWErDI7oVmNHwyPHg2gDtDxa0PEJo1Nc9SGe7o0oqf2GumhW5NVAEzdr U1BrslYF8OUR9u87mp71wwgQa4d38Y+2h5+SsVMIUHumxuw6jnIy+WN7WngWcaS0j5JO qE1A== X-Gm-Message-State: AOAM5300E+t1UZbjnPtQxLkDtPWg7PUp4fg1lscXCxx2UPiQOkj6C9wm irjE1OsuBFLogW1Khhe35Unch+6IzgtK8w== X-Google-Smtp-Source: ABdhPJyDZKjsNBuOmxe+vilX+Wy9nU6YL5AeJDeatg3Ec/Vlnoa55I2fKintQEMo2xw1XEUq/kdbXA== X-Received: by 2002:a7b:c1cb:: with SMTP id a11mr16879700wmj.30.1637144428612; Wed, 17 Nov 2021 02:20:28 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id n32sm6456256wms.1.2021.11.17.02.20.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Nov 2021 02:20:28 -0800 (PST) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Phillip Wood , Jeff King , Dan Jacques , Eric Wong , Jonathan Nieder , Mike Hommey , =?utf-8?b?xJBvw6BuIFRy4bqnbiBDw7RuZyBEYW5o?= , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= Subject: [PATCH v4 04/23] Makefile: clean perl/build/ even with NO_PERL=Y Date: Wed, 17 Nov 2021 11:20:03 +0100 Message-Id: X-Mailer: git-send-email 2.34.0.796.g2c87ed6146a In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Fix a regression in 499c29394ce (Makefile: allow building without perl, 2009-04-03) where we'd stop cleaning the perl/* directory because NO_PERL was defined, thus leaving behind litter if the flag at "clean" time didn't match that of build time. In 499c29394ce this was done to avoid relying on the perl/Makefile.PL, but since my 20d2a30f8ff (Makefile: replace perl/Makefile.PL with simple make rules, 2017-12-10) we can clean things in that directory unconditionally. Signed-off-by: Ævar Arnfjörð Bjarmason --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 6b77702e102..a71fba15e30 100644 --- a/Makefile +++ b/Makefile @@ -3234,6 +3234,7 @@ clean: profile-clean coverage-clean cocciclean $(RM) $(HCC) $(RM) -r bin-wrappers $(dep_dirs) $(compdb_dir) compile_commands.json $(RM) -r po/build/ + $(RM) -r perl/build/ $(RM) *.pyc *.pyo */*.pyc */*.pyo $(GENERATED_H) $(ETAGS_TARGET) tags cscope* $(RM) -r .dist-tmp-dir .doc-tmp-dir $(RM) $(GIT_TARNAME).tar.gz @@ -3242,7 +3243,6 @@ clean: profile-clean coverage-clean cocciclean $(RM) Documentation/GIT-EXCLUDED-PROGRAMS ifndef NO_PERL $(MAKE) -C gitweb clean - $(RM) -r perl/build/ endif $(MAKE) -C templates/ clean $(MAKE) -C t/ clean From patchwork Wed Nov 17 10:20:04 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12624301 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 02BB8C433EF for ; Wed, 17 Nov 2021 10:20:40 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id DC10161BAA for ; Wed, 17 Nov 2021 10:20:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236266AbhKQKXg (ORCPT ); Wed, 17 Nov 2021 05:23:36 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56424 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236217AbhKQKXa (ORCPT ); Wed, 17 Nov 2021 05:23:30 -0500 Received: from mail-wm1-x336.google.com (mail-wm1-x336.google.com [IPv6:2a00:1450:4864:20::336]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4765CC061764 for ; Wed, 17 Nov 2021 02:20:31 -0800 (PST) Received: by mail-wm1-x336.google.com with SMTP id p3-20020a05600c1d8300b003334fab53afso4322135wms.3 for ; Wed, 17 Nov 2021 02:20:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=JFYSW7wsZhC1JEB9FxIu9/K6+I4l2z3dzIA+Y/HjmDo=; b=oy7+ZI0lrokYUaaHl1MEt45nn78KjKCy/JaNjO1TUNUCQh2x1OwgyyHkuZi3UVxdzF KL08NyPCRJ0ADWW5LUqT4dm87KxFim2tLDaJKn/GqYevAQFD+hw0T7PDZ16MUTIckHTV 81kG/RGqM4f6nCmPA1DUoAElsk0l2/xwV5B6khQrJV9IK9xLjDXXXHhLEoCTy4HJmVNN GJxvOGzh+CLQQIVzYw+eLnZmd6+jgxdQvyBJ2c9+ztYcWSns9uIXEehy6QZb0LGYDbYx cTyxA5lODSva5kADTVM/Btg+vtCog6LGSWvgwmlW2NqFxvtWhCSlUoFg201xoNychXGA uQRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=JFYSW7wsZhC1JEB9FxIu9/K6+I4l2z3dzIA+Y/HjmDo=; b=PLWGfAnPRVUtYszF8s3BPHk7I58mCGtTtkJOixQlFwBeN3INFeqW0uJup5Rz9jyhQb B09yeaMBnBpV9UzT+O+Wb/x83N35IkvdlkCkBdeHhyqgK/h8bBNMBJR9s5aXFKBbjm9L P4XzukEgeHYDa+qcgwCJemlIiMS67NkPF0IPLr1GPTPG/mL7iw8/IHqIWfTky9N8Rckd UrWPvFhrKlMsLkykQAUQ9Ge/oeYANbpVzxKB4Eeuk1618l4okTy812+nV1blOK3T2VLx LzfjSVyHfRgRtvXHnzIEE5sGeMZKQ1JBXCi5lK6u0FpFGrxek4QJnMlihDt/V+AwHvJf bi/A== X-Gm-Message-State: AOAM532KoZsOR92Z8fFt1yVybpUYvS/OI0Jaur4sLnO3Sjh+KkMlA7w7 NbhC5Sk6BM3VgciI3+XgzRbhT1GWfgwCMw== X-Google-Smtp-Source: ABdhPJzS2jfqzxtACBDW0N+xFMfNY0JR7wMV0BvGk0p/4PA762bB03O5JQ8PrGkFSx4bDZmfC73OVw== X-Received: by 2002:a05:600c:35c8:: with SMTP id r8mr16704571wmq.8.1637144429614; Wed, 17 Nov 2021 02:20:29 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id n32sm6456256wms.1.2021.11.17.02.20.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Nov 2021 02:20:28 -0800 (PST) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Phillip Wood , Jeff King , Dan Jacques , Eric Wong , Jonathan Nieder , Mike Hommey , =?utf-8?b?xJBvw6BuIFRy4bqnbiBDw7RuZyBEYW5o?= , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= Subject: [PATCH v4 05/23] Makefile: remove "mv $@ $@+" dance redundant to .DELETE_ON_ERROR Date: Wed, 17 Nov 2021 11:20:04 +0100 Message-Id: X-Mailer: git-send-email 2.34.0.796.g2c87ed6146a In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Since 7b76d6bf221 (Makefile: add and use the ".DELETE_ON_ERROR" flag, 2021-06-29) we don't need to guard the clobbering of $@ with this sort of "mv $@+ $@" pattern in these cases where we're merely generating a file that'll be used as a dependency for other files, as in this case for GIT-PERL-HEADER. We have had a hard dependency on .DELETE_ON_ERROR since 7b76d6bf221 (Makefile: add and use the ".DELETE_ON_ERROR" flag, 2021-06-29), so this is a pure cleanup as a follow-up to that commit. Support for the ".DELETE_ON_ERROR" target itself is much older than any GNU make version we support, it was added to GNU make in 1994. Signed-off-by: Ævar Arnfjörð Bjarmason --- Makefile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Makefile b/Makefile index a71fba15e30..284725099c9 100644 --- a/Makefile +++ b/Makefile @@ -2349,8 +2349,7 @@ GIT-PERL-HEADER: $(PERL_HEADER_TEMPLATE) GIT-PERL-DEFINES Makefile -e 's=@@PERLLIBDIR_REL@@=$(perllibdir_relative_SQ)=g' \ -e 's=@@GITEXECDIR_REL@@=$(gitexecdir_relative_SQ)=g' \ -e 's=@@LOCALEDIR_REL@@=$(localedir_relative_SQ)=g' \ - $< >$@+ && \ - mv $@+ $@ + $< >$@ .PHONY: perllibdir perllibdir: From patchwork Wed Nov 17 10:20:05 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12624305 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5615CC433F5 for ; Wed, 17 Nov 2021 10:20:43 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 3A86F61BF9 for ; Wed, 17 Nov 2021 10:20:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236264AbhKQKXj (ORCPT ); Wed, 17 Nov 2021 05:23:39 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56442 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236230AbhKQKXd (ORCPT ); Wed, 17 Nov 2021 05:23:33 -0500 Received: from mail-wr1-x434.google.com (mail-wr1-x434.google.com [IPv6:2a00:1450:4864:20::434]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1067DC0613B9 for ; Wed, 17 Nov 2021 02:20:32 -0800 (PST) Received: by mail-wr1-x434.google.com with SMTP id u18so3599329wrg.5 for ; Wed, 17 Nov 2021 02:20:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=rjDThg6J3EWSLvU0djNifLAzukbACcFOzjf8hCqyRlY=; b=i+L6wTInbt9mPiFEp0OHZwzjGAesXys3WGU8ZrxSWiSHMWyD7Y5o61wk0CG1vgWJ3P RcBE4AN6vaKQarLKb4D6mRy8ZrT1JAshLuc+Ijd2s/ZowQTQBr7NCYGVqpTee36DDsu9 2+a5rWRlW4fhn1xPsF0fkUxGE8myzQAQCJNG6dBv9dlz3Ps9NSgmFpVEtNUZ9xgK/Ri3 ZrinkAgdi0AjLCs/Yj8m5EThZs1sHHf4ywQPeAUTABNRME0lCp+4EanMf8pVqTYweJKP IB9ZFa9JD1cZAebJE9dZFOXzeU/5mLeu4gnY0ITG9egn1oU6hV2tNEGTzLd+8cdSIB1v E38w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=rjDThg6J3EWSLvU0djNifLAzukbACcFOzjf8hCqyRlY=; b=f7342e/rB1Jl9zJCPVlDnLra8dsxEKlrecL5ybg47ohxJdR0ubWYxXkWfhtnC5oZZf dPKCcGt/xKhxVBxLWZiux2yuzIHZgOj/KJ9RtGruVBNAurcxexr5L4GZb32cbLiIETPI XAEkngzVoKKaJc17px09DRNutEMqSjH1eUcFA/3pLBbOhBvFmBebCNHbiHg+xMhX+bPj HmBkykUhuI08bJOO34p4XInxMgF5prriEcGR0e1TAz8Af+2O9ZD19oJ8gauWQjuKflOm bZ4NC2dg4ljNeagdCQQPGVidcEpCBNzAiKpIVg1O2pqCqt0m3Oa9FSoX60q1TRjd93xl etfw== X-Gm-Message-State: AOAM531Zb2W8pUbIW572iaR+TonfkkcijUl7D2wI0tUp7XE+pR/6Ma+i 0IV9OjGjsXpRtObHPALddPXpub6Zr1UgvA== X-Google-Smtp-Source: ABdhPJwGHyW+9ymmxRLt/cx0alRi2Tr6BduOKPtH1dB0KBo8HFdpynymy7zqTZ3r10pe7bqpvPzCHQ== X-Received: by 2002:a5d:6707:: with SMTP id o7mr18219921wru.172.1637144430447; Wed, 17 Nov 2021 02:20:30 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id n32sm6456256wms.1.2021.11.17.02.20.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Nov 2021 02:20:29 -0800 (PST) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Phillip Wood , Jeff King , Dan Jacques , Eric Wong , Jonathan Nieder , Mike Hommey , =?utf-8?b?xJBvw6BuIFRy4bqnbiBDw7RuZyBEYW5o?= , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= Subject: [PATCH v4 06/23] Makefile: guard Perl-only variable assignments Date: Wed, 17 Nov 2021 11:20:05 +0100 Message-Id: X-Mailer: git-send-email 2.34.0.796.g2c87ed6146a In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Move the "ifndef NO_PERL" a few lines earlier to encompass the "perl_localedir_SQ" variable. We'll only use it under !NO_PERL. Signed-off-by: Ævar Arnfjörð Bjarmason --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 284725099c9..0cb10f00ebb 100644 --- a/Makefile +++ b/Makefile @@ -2291,11 +2291,11 @@ git.res: git.rc GIT-VERSION-FILE GIT-PREFIX # This makes sure we depend on the NO_PERL setting itself. $(SCRIPT_PERL_GEN): GIT-BUILD-OPTIONS +ifndef NO_PERL # Used for substitution in Perl modules. Disabled when using RUNTIME_PREFIX # since the locale directory is injected. perl_localedir_SQ = $(localedir_SQ) -ifndef NO_PERL PERL_HEADER_TEMPLATE = perl/header_templates/fixed_prefix.template.pl PERL_DEFINES = PERL_DEFINES += $(PERL_PATH_SQ) From patchwork Wed Nov 17 10:20:06 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12624303 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 556A2C433FE for ; Wed, 17 Nov 2021 10:20:41 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 3B13061BAA for ; Wed, 17 Nov 2021 10:20:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236251AbhKQKXi (ORCPT ); Wed, 17 Nov 2021 05:23:38 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56444 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236234AbhKQKXd (ORCPT ); Wed, 17 Nov 2021 05:23:33 -0500 Received: from mail-wm1-x32c.google.com (mail-wm1-x32c.google.com [IPv6:2a00:1450:4864:20::32c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1704FC061200 for ; Wed, 17 Nov 2021 02:20:33 -0800 (PST) Received: by mail-wm1-x32c.google.com with SMTP id o29so1689471wms.2 for ; Wed, 17 Nov 2021 02:20:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ioLkPq9nUvdEDMhLisH+SQLwIBW2WR9NSvP/bDOJrQI=; b=bwtLm0pz6agGdYdCKqqTdXgTYZ1GIdgT4Y0U7gv+ajZa6yICvu3f4EKVwPnN7qF9aK 1K4XV0TgYmXQGvtcYjFzQMOpH00ll1P29PO4Q8Ns2pQl0yZx6I28R83FOY3VMZSQk5+P GM2sypcve/amZdps9AlDxKBbn2V84fIXleHsfI7SF7Xvn5Gb7DCd5sxqTebHJBreTlSY 7zoaaZSjalILaWqR1qB1TWfZ1oa/CQOKnICl+ROt1itHfKsG9r2EVHT6X0xzFB0xt3tq HKuvFULvdnDkr+QVuYhV4VZxed6LKaUMmX8Xfl8OsP/GEWHBWFbP35vF+tTfOOLxTGef 33tw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ioLkPq9nUvdEDMhLisH+SQLwIBW2WR9NSvP/bDOJrQI=; b=vkWf1wWd7xI/NCGcqIK0RRaWs+yjl3jXzbT6IVmLtDtq7yGqD94qAcKBENretX+EKe TYiP6pVgZsnnpXDzL4ex886gSHteiqMk3mwFV9YgJZjT214VGC9Na2wSYDOXn0CJWxeV tnDn65o4tUVsVVzMCyk2ImPsuFmDFme2zbfF4CXA4ynsJoEeZ/NJJj2NysxLHLkP4xb6 fDYNS3wFQXIvwjEM5pvf3mbeBd1NZYE3g/UriEulA6illUMF9r7YXkWRTXvZHt197K+4 SBYx5m8X0GHJgNIXBrHZxhiXC805g74ySVjal5WT3DwAlwTITk83R/p69xBIBOowBvlr zsSA== X-Gm-Message-State: AOAM530d05CXVOLBuNm7D3MwxZAU1fUf0vXYJUmyuhIWp/K6ovDqEpJg vUsIhAnYFLIkQdXqkwc8E999Yo2LJH6+VQ== X-Google-Smtp-Source: ABdhPJwiaXe2MQ59L9P9GfHLmyqFIWPCb/5VEUvAFm7cdgp1g0x7OdCXZ/HJ4D8F8Uv9vj3ZUmsxXw== X-Received: by 2002:a05:600c:1d0e:: with SMTP id l14mr75321840wms.64.1637144431367; Wed, 17 Nov 2021 02:20:31 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id n32sm6456256wms.1.2021.11.17.02.20.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Nov 2021 02:20:30 -0800 (PST) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Phillip Wood , Jeff King , Dan Jacques , Eric Wong , Jonathan Nieder , Mike Hommey , =?utf-8?b?xJBvw6BuIFRy4bqnbiBDw7RuZyBEYW5o?= , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= Subject: [PATCH v4 07/23] Makefile: change "ifndef NO_PERL" to "ifdef NO_PERL" Date: Wed, 17 Nov 2021 11:20:06 +0100 Message-Id: X-Mailer: git-send-email 2.34.0.796.g2c87ed6146a In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Change the NO_PERL variable assignments so that they declare the much smaller fallback condition first. Signed-off-by: Ævar Arnfjörð Bjarmason --- Makefile | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Makefile b/Makefile index 0cb10f00ebb..288f4834db8 100644 --- a/Makefile +++ b/Makefile @@ -2291,7 +2291,15 @@ git.res: git.rc GIT-VERSION-FILE GIT-PREFIX # This makes sure we depend on the NO_PERL setting itself. $(SCRIPT_PERL_GEN): GIT-BUILD-OPTIONS -ifndef NO_PERL +ifdef NO_PERL +$(SCRIPT_PERL_GEN) git-instaweb: % : unimplemented.sh + $(QUIET_GEN) \ + sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \ + -e 's|@@REASON@@|NO_PERL=$(NO_PERL)|g' \ + unimplemented.sh >$@+ && \ + chmod +x $@+ && \ + mv $@+ $@ +else # NO_PERL # Used for substitution in Perl modules. Disabled when using RUNTIME_PREFIX # since the locale directory is injected. perl_localedir_SQ = $(localedir_SQ) @@ -2363,14 +2371,6 @@ git-instaweb: git-instaweb.sh GIT-SCRIPT-DEFINES $(QUIET_GEN)$(cmd_munge_script) && \ chmod +x $@+ && \ mv $@+ $@ -else # NO_PERL -$(SCRIPT_PERL_GEN) git-instaweb: % : unimplemented.sh - $(QUIET_GEN) \ - sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \ - -e 's|@@REASON@@|NO_PERL=$(NO_PERL)|g' \ - unimplemented.sh >$@+ && \ - chmod +x $@+ && \ - mv $@+ $@ endif # NO_PERL # This makes sure we depend on the NO_PYTHON setting itself. From patchwork Wed Nov 17 10:20:07 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12624307 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C1CCAC433EF for ; Wed, 17 Nov 2021 10:20:54 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A5AAC61BF9 for ; Wed, 17 Nov 2021 10:20:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236298AbhKQKXm (ORCPT ); Wed, 17 Nov 2021 05:23:42 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56448 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236240AbhKQKXe (ORCPT ); Wed, 17 Nov 2021 05:23:34 -0500 Received: from mail-wm1-x332.google.com (mail-wm1-x332.google.com [IPv6:2a00:1450:4864:20::332]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EC049C061202 for ; Wed, 17 Nov 2021 02:20:33 -0800 (PST) Received: by mail-wm1-x332.google.com with SMTP id c71-20020a1c9a4a000000b0032cdcc8cbafso1661473wme.3 for ; Wed, 17 Nov 2021 02:20:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=JKM5NSWEUZZ/ClhecGRt6FM08CAhCaAUBaNRamL1AMA=; b=MR9t5HVWTzaG3P+ldmTgrtikbbO4adxGHotvv3VBfFIN5G5L+A9pnESzt+z8yVw2gW vHevn9vSSj2MrNuyX/SC8KzzgzDfMbs7+9hlhTOoczhANwMMeP+8p4XKuZEX9Ln3ZoIC Dk8Zc//On7bBuhHp+9oQ/OQk0FLIoVvNLnxZMYM+GOpiCj4P+R4n2YXjBFpNDY9REWvj O9wbKGHM68DfiYBfTQFDk1EToPti8MFfwMeZTXwUflVfX3j242v/R9Rwqvg6JYITdUp4 BxAMZPFmwdsoogM/JFI0S6AzZ0sF+4XHiyCrNZ9wytaAXgxofwLwxtuVd8rbe58BYwMj v8JA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=JKM5NSWEUZZ/ClhecGRt6FM08CAhCaAUBaNRamL1AMA=; b=U48QDEgm6XXfI6Gzn8ZS4CDsR+2FkPujwkzKQFI/wt1ue6HXUxIe5s/4a7wSBnszdO pWX/NsQa0wMK9KQCHrORQD/NaXxG4iHkeWOLRG0vPQK5IL3HLCD53yomct1V7NcEGXa6 F7rCE95DkNaMNhJNNr7v+u/uUh3U9YTJWxpATsZeMt85jdkbFXu/bPv5OJNV+3RKn+lc 4Gx8htaVroD4JzOhRy2qkuKmX4oi3nPH94vFeQFDHsSLdJbXeab1ruos6TM2/xC3GlKl yg5Q44SEL1s+GCCRVX7ZtSojvaVuM681KbdOU9HOZDOhBU3tY0TR4OiAWcMopVv6SEcH y8mw== X-Gm-Message-State: AOAM532SLHI6UBOVqGkhG4JrjqgqV3GPvDbc+oLPmnVg13a9nOTMZ7RX zGimXlCEDH82Dbpf9olOHeMduPw33f4tvA== X-Google-Smtp-Source: ABdhPJzAEKCi//RiNCgXd/kEPtC/ePG7/RaSzPM8T/9AEunvjBi1efcnOH1C5FpzrXBVDQBtf+/CTg== X-Received: by 2002:a1c:1d42:: with SMTP id d63mr76833546wmd.184.1637144432278; Wed, 17 Nov 2021 02:20:32 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id n32sm6456256wms.1.2021.11.17.02.20.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Nov 2021 02:20:31 -0800 (PST) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Phillip Wood , Jeff King , Dan Jacques , Eric Wong , Jonathan Nieder , Mike Hommey , =?utf-8?b?xJBvw6BuIFRy4bqnbiBDw7RuZyBEYW5o?= , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= Subject: [PATCH v4 08/23] Makefile: adjust Perl-related comments & whitespace Date: Wed, 17 Nov 2021 11:20:07 +0100 Message-Id: X-Mailer: git-send-email 2.34.0.796.g2c87ed6146a In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Folllow-up my 4070c9e09fc (Makefile: don't re-define PERL_DEFINES, 2021-05-05) and move the rest of the assignments to PERL_DEFINES to one place. Signed-off-by: Ævar Arnfjörð Bjarmason --- Makefile | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/Makefile b/Makefile index 288f4834db8..ab78f8dd42e 100644 --- a/Makefile +++ b/Makefile @@ -2312,21 +2312,19 @@ PERL_DEFINES += $(perllibdir_SQ) PERL_DEFINES += $(RUNTIME_PREFIX) PERL_DEFINES += $(NO_PERL_CPAN_FALLBACKS) PERL_DEFINES += $(NO_GETTEXT) +PERL_DEFINES += $(gitexecdir) +PERL_DEFINES += $(perllibdir) +PERL_DEFINES += $(localedir) +PERL_DEFINES := $(subst $(space),:,$(PERL_DEFINES)) -# Support Perl runtime prefix. In this mode, a different header is installed -# into Perl scripts. ifdef RUNTIME_PREFIX - PERL_HEADER_TEMPLATE = perl/header_templates/runtime_prefix.template.pl -# Don't export a fixed $(localedir) path; it will be resolved by the Perl header -# at runtime. +# The RUNTIME_PREFIX header defines $Git::I18N::TEXTDOMAINDIR, so +# $(perl_localedir_SQ) won't be needed perl_localedir_SQ = - endif -PERL_DEFINES += $(gitexecdir) $(perllibdir) $(localedir) - $(SCRIPT_PERL_GEN): % : %.perl GIT-PERL-DEFINES GIT-PERL-HEADER GIT-VERSION-FILE $(QUIET_GEN) \ sed -e '1{' \ @@ -2339,7 +2337,6 @@ $(SCRIPT_PERL_GEN): % : %.perl GIT-PERL-DEFINES GIT-PERL-HEADER GIT-VERSION-FILE chmod +x $@+ && \ mv $@+ $@ -PERL_DEFINES := $(subst $(space),:,$(PERL_DEFINES)) GIT-PERL-DEFINES: FORCE @FLAGS='$(PERL_DEFINES)'; \ if test x"$$FLAGS" != x"`cat $@ 2>/dev/null`" ; then \ From patchwork Wed Nov 17 10:20:08 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12624309 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 027F5C433F5 for ; Wed, 17 Nov 2021 10:21:00 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id DA7CD61BFA for ; Wed, 17 Nov 2021 10:20:59 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236253AbhKQKX4 (ORCPT ); Wed, 17 Nov 2021 05:23:56 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56460 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236248AbhKQKXf (ORCPT ); Wed, 17 Nov 2021 05:23:35 -0500 Received: from mail-wm1-x32b.google.com (mail-wm1-x32b.google.com [IPv6:2a00:1450:4864:20::32b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E5BC0C061208 for ; Wed, 17 Nov 2021 02:20:34 -0800 (PST) Received: by mail-wm1-x32b.google.com with SMTP id 67-20020a1c1946000000b0030d4c90fa87so1677805wmz.2 for ; Wed, 17 Nov 2021 02:20:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ozT1BeqC888aS0QhgJU68S/rvo0Y04jiLv95MlIFDdA=; b=ePBwO6nAuTDR0t5DShTwj3PGky7LPxbU3+iRBGmLtE5OfeP/aYB/vo+VK/D37osH8I LCVIieR8ImqWv+yBaMK9DIvJyPHVxsvV/vb6QALUwwUpZ9ijPbxqntPvHs1mBLZzKs2g 2um3OergUMzZPxK/y++at5C9JH/grv98CChEm6g56PJOR8MTVIq97yiR9PosUD2CFHyr 3Pr+SqqHz/x5P5oy0yq3rQ3Q97m64PmzGVXs5bjJ3hgdOwVPY3YPDu2o2gl6jBvXuwgU jz2uFhVg3mZBWyLjd/VJbEMbiWHBruniA0a6gK+b5ei842L1XLMVGmqxZi5lS0+w7ssN mauA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ozT1BeqC888aS0QhgJU68S/rvo0Y04jiLv95MlIFDdA=; b=bvxnNJZ/NXIDh4iZ+h1a5+YN91KBdehqn8nhUuEbLOwKm7SFnAL+vkuAxqF13JJlVY MdpFyPxxkgQwQoze5lrgvTo/DOn6XMhluFjHpSllckEsQaUx2AVhp6Z0/n0K1Ksi9iWl ACJFs8Nd23eWd9SEK0zS6yEGCPxFQ+QK2wu7/tJdDz3oaMBzxw7pkJHr6HKF8hnFji0y ci9DqX9wOswxSL5cK90XlYtm+fgi2h7ym73I+tN26dZQ+XAf94uf84VfgmqoNFybjx1f ieksGyyO8z3fXUQfMxuS9COy2na1G83tYlENoOshM0ZgEmVe+uAWaa8yapwLQX2W5md9 sEuw== X-Gm-Message-State: AOAM530CrPV0a3YgvpsiIxiv+lXU2VIPhMktYXt4Ltjq2Mr114PYZ1we HrZfDlswadRjbjhxqC1xja5bg9jTykIFzA== X-Google-Smtp-Source: ABdhPJxGfQ2FVnrztpU9eSV5iGF42R7lW+UWHM+7xHP/KaX/PDkQK5ICgMzvSxXBYI6pBlPtEnUsow== X-Received: by 2002:a1c:f416:: with SMTP id z22mr17221847wma.121.1637144433134; Wed, 17 Nov 2021 02:20:33 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id n32sm6456256wms.1.2021.11.17.02.20.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Nov 2021 02:20:32 -0800 (PST) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Phillip Wood , Jeff King , Dan Jacques , Eric Wong , Jonathan Nieder , Mike Hommey , =?utf-8?b?xJBvw6BuIFRy4bqnbiBDw7RuZyBEYW5o?= , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= Subject: [PATCH v4 09/23] Makefile: correct "GIT-PERL-{DEFINES,HEADER}" dependency graph Date: Wed, 17 Nov 2021 11:20:08 +0100 Message-Id: X-Mailer: git-send-email 2.34.0.796.g2c87ed6146a In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Fix several small issues with the dependency graph of the generated "GIT-PERL-DEFINES" and "GIT-PERL-HEADER" files: 1. Don't have "GIT-PERL-HEADER" depend on the "Makefile". That was a lazy way to over-declare the dependencies added in f6a0ad4be71 (Makefile: generate Perl header from template file, 2018-04-10). Let's correct our dependency graph instead. 2. Don't have $(SCRIPT_PERL_GEN) (such as "git-send-email") depend on GIT-BUILD-OPTIONS. Let's instead use GIT-PERL-DEFINES. The reason for depending on "GIT-BUILD-OPTIONS" was to trigger a re-build if NO_PERL=Y was defined. We can instead add that variable to "PERL_DEFINES", and have "GIT-PERL-DEFINES" created and updated if "NO_PERL=Y" is defined. 3. Due to #2 we'll need to have GIT-PERL-DEFINES be generated even under NO_PERL, since that variable will be used by the "unimplemented.sh" script. 4. Don't depend on $(gitexecdir), $(perllibdir) and $(localedir), instead depend on the $(*_relative_SQ) versions of those. The latter is what we'll actually use, while it's unlikely to matter in practice (we'd just skip re-building these under RUNTIME_PREFIX if the relative path was the same) it makes the code easier to read. That's because this brings us to a 1=1 mapping of these variables and what's subsequently used in the "GIT-PERL-DEFINES", "GIT-PERL-HEADER" and "perl/build/lib/%.pm" rules below. 5. We don't need the substitution of " " for ":" added in 07d90eadb50 (Makefile: add Perl runtime prefix support, 2018-04-10), let's drop it. This doesn't matter for the correctness of these files, because unlike GIT-BUILD-OPTIONS nothing is consuming them except the Makefile itself. Signed-off-by: Ævar Arnfjörð Bjarmason --- Makefile | 42 +++++++++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/Makefile b/Makefile index ab78f8dd42e..361abff2402 100644 --- a/Makefile +++ b/Makefile @@ -2288,10 +2288,14 @@ git.res: git.rc GIT-VERSION-FILE GIT-PREFIX $(shell echo $(GIT_VERSION) 0 0 0 0 | tr '.a-zA-Z-' ' '))) \ -DGIT_VERSION="\\\"$(GIT_VERSION)\\\"" -i $< -o $@ -# This makes sure we depend on the NO_PERL setting itself. -$(SCRIPT_PERL_GEN): GIT-BUILD-OPTIONS +# Under NO_PERL=Y we'll still make GIT-PERL-DEFINES. We need to depend +# on NO_PERL=Y itself for creating "unimplemented.sh" scripts. +PERL_DEFINES = +$(SCRIPT_PERL_GEN): GIT-PERL-DEFINES ifdef NO_PERL +PERL_DEFINES += $(NO_PERL) + $(SCRIPT_PERL_GEN) git-instaweb: % : unimplemented.sh $(QUIET_GEN) \ sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \ @@ -2300,22 +2304,26 @@ $(SCRIPT_PERL_GEN) git-instaweb: % : unimplemented.sh chmod +x $@+ && \ mv $@+ $@ else # NO_PERL -# Used for substitution in Perl modules. Disabled when using RUNTIME_PREFIX -# since the locale directory is injected. +# The localedir is only used in Perl modules if !NO_GETTEXT +ifndef NO_GETTEXT perl_localedir_SQ = $(localedir_SQ) +endif PERL_HEADER_TEMPLATE = perl/header_templates/fixed_prefix.template.pl -PERL_DEFINES = + PERL_DEFINES += $(PERL_PATH_SQ) PERL_DEFINES += $(PERLLIB_EXTRA_SQ) PERL_DEFINES += $(perllibdir_SQ) PERL_DEFINES += $(RUNTIME_PREFIX) PERL_DEFINES += $(NO_PERL_CPAN_FALLBACKS) PERL_DEFINES += $(NO_GETTEXT) -PERL_DEFINES += $(gitexecdir) -PERL_DEFINES += $(perllibdir) -PERL_DEFINES += $(localedir) -PERL_DEFINES := $(subst $(space),:,$(PERL_DEFINES)) +ifdef RUNTIME_PREFIX +PERL_DEFINES += $(gitexecdir_relative_SQ) +PERL_DEFINES += $(perllibdir_relative_SQ) +PERL_DEFINES += $(localedir_relative_SQ) +else +PERL_DEFINES += $(perllocaledir_SQ) +endif ifdef RUNTIME_PREFIX PERL_HEADER_TEMPLATE = perl/header_templates/runtime_prefix.template.pl @@ -2337,14 +2345,7 @@ $(SCRIPT_PERL_GEN): % : %.perl GIT-PERL-DEFINES GIT-PERL-HEADER GIT-VERSION-FILE chmod +x $@+ && \ mv $@+ $@ -GIT-PERL-DEFINES: FORCE - @FLAGS='$(PERL_DEFINES)'; \ - if test x"$$FLAGS" != x"`cat $@ 2>/dev/null`" ; then \ - echo >&2 " * new perl-specific parameters"; \ - echo "$$FLAGS" >$@; \ - fi - -GIT-PERL-HEADER: $(PERL_HEADER_TEMPLATE) GIT-PERL-DEFINES Makefile +GIT-PERL-HEADER: $(PERL_HEADER_TEMPLATE) GIT-PERL-DEFINES $(QUIET_GEN) \ INSTLIBDIR='$(perllibdir_SQ)' && \ INSTLIBDIR_EXTRA='$(PERLLIB_EXTRA_SQ)' && \ @@ -2370,6 +2371,13 @@ git-instaweb: git-instaweb.sh GIT-SCRIPT-DEFINES mv $@+ $@ endif # NO_PERL +GIT-PERL-DEFINES: FORCE + @FLAGS='$(PERL_DEFINES)'; \ + if test x"$$FLAGS" != x"`cat $@ 2>/dev/null`" ; then \ + echo >&2 " * new perl-specific parameters"; \ + echo "$$FLAGS" >$@; \ + fi + # This makes sure we depend on the NO_PYTHON setting itself. $(SCRIPT_PYTHON_GEN): GIT-BUILD-OPTIONS From patchwork Wed Nov 17 10:20:09 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12624311 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C6588C433EF for ; Wed, 17 Nov 2021 10:21:01 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id ABD3461BF8 for ; Wed, 17 Nov 2021 10:21:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236248AbhKQKX6 (ORCPT ); Wed, 17 Nov 2021 05:23:58 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56472 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236254AbhKQKXg (ORCPT ); Wed, 17 Nov 2021 05:23:36 -0500 Received: from mail-wr1-x430.google.com (mail-wr1-x430.google.com [IPv6:2a00:1450:4864:20::430]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C6EC2C06120E for ; Wed, 17 Nov 2021 02:20:35 -0800 (PST) Received: by mail-wr1-x430.google.com with SMTP id d27so3606090wrb.6 for ; Wed, 17 Nov 2021 02:20:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=uMfYwHBUpRDL5JDr17GIhC5tp/ZUJ6bi7sOTRaHbMJc=; b=UBRzxsqsWRIhyoeEP/69nj27ovADZYsaelV3WQJOtgeowx8yZsww3woHdut+9WraaA jxNJz4n/0QM9D9CCHIFbqkYGf4k63a87r/O2DZHqsaLheOgDTv58NoQ2Sii4kuIN8HuG 3hkYxLIKm4CuVEykCpeB4ChJ3QYQLBgQPPBguYPOksCgq68413Q6RERksBWEOFnYL/hz 9/rCLShCgZC8mWxFtFIhy+oPIGAa+0SI2fD0WOUAkwmsZwlGBe9sPGZzWqoNRMwba6Ul 4r8yk5QpCLz2mh9JgrGSluogP82GCOEm3gPKqxLuMtHpEfr+suxKuSx5H7hrSwEBx7uw qwQA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=uMfYwHBUpRDL5JDr17GIhC5tp/ZUJ6bi7sOTRaHbMJc=; b=if5CRUY5rj5TWyMCcRlNEm9+IHicQUtPs7AI+aDCN6uCBBxwkklkS/FtQRX5P4PHNr 5l2u5ncweqN2C7JuXtefB4AWpEhraFzlFHbmJJwd+NjT5UO6Gsv4E6C5yGFUX/sLK0kx XXcxfvPGDV2UqLjtMqkO34AwvpoS6NEQhQnC3saSuEgEudYJ6WqRc1/JI6CF6W5d1x0r T5faamHh94+OVoVSd+zNBKV/RKM41SVIbIdL/sRc9L5o+2fz83FO2+spzS/MAK9tru4d sGeNtyg7RY+B9vTriBXp2/apGxuQJ110oS1fjwI9FvmsmYjp3nr7vHLIwdjjXlOwjF2m TyHQ== X-Gm-Message-State: AOAM532as0M/aGZ1kXsnN1bdOmh7zWGdOJC3hmQYGBlNU3FXyesGWKys yfPq1DIx/NwD/uEK8c/6rm9uHXmNVk+6cA== X-Google-Smtp-Source: ABdhPJxkssHHnGFAkRqQXfcGZZaYujYU7LztaGCVDMxC/cMn8E6VeHqgr8HQgxt0Lyqb3vr3d6QOKw== X-Received: by 2002:adf:fc90:: with SMTP id g16mr18250527wrr.53.1637144434074; Wed, 17 Nov 2021 02:20:34 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id n32sm6456256wms.1.2021.11.17.02.20.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Nov 2021 02:20:33 -0800 (PST) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Phillip Wood , Jeff King , Dan Jacques , Eric Wong , Jonathan Nieder , Mike Hommey , =?utf-8?b?xJBvw6BuIFRy4bqnbiBDw7RuZyBEYW5o?= , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= Subject: [PATCH v4 10/23] Makefile: create a GIT-PYTHON-DEFINES, like "PERL" Date: Wed, 17 Nov 2021 11:20:09 +0100 Message-Id: X-Mailer: git-send-email 2.34.0.796.g2c87ed6146a In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Create a new "GIT-PYTHON-DEFINES" file, and untangle the dependency issues of the Python by copying over the patterns established for building the adjacent Perl code in preceding commits. As with Perl, there's no real reason to depend on GIT-BUILD-OPTIONS or GIT-CFLAGS when building the Python code, nor did we need GIT-PREFIX. Let's instead add those variables we care about to a "GIT-PYTHON-DEFINES" and depend on that. This changes code originally added in ca3bcabf118 (auto-detect changed prefix and/or changed build flags, 2006-06-15), and adjusted in 96a4647fca5 (Makefile: detect when PYTHON_PATH changes, 2012-12-18). The relevant code for the "Perl" targets was then added in 07981dce81e (Makefile: rebuild perl scripts when perl paths change, 2013-11-18), and has been adjusted in preceding commits. Signed-off-by: Ævar Arnfjörð Bjarmason --- .gitignore | 2 +- Makefile | 49 +++++++++++++++++++++++++------------------------ 2 files changed, 26 insertions(+), 25 deletions(-) diff --git a/.gitignore b/.gitignore index 054249b20a8..845e5d0c355 100644 --- a/.gitignore +++ b/.gitignore @@ -8,7 +8,7 @@ /GIT-PREFIX /GIT-PERL-DEFINES /GIT-PERL-HEADER -/GIT-PYTHON-VARS +/GIT-PYTHON-DEFINES /GIT-SCRIPT-DEFINES /GIT-USER-AGENT /GIT-VERSION-FILE diff --git a/Makefile b/Makefile index 361abff2402..c698c5b058a 100644 --- a/Makefile +++ b/Makefile @@ -2378,18 +2378,15 @@ GIT-PERL-DEFINES: FORCE echo "$$FLAGS" >$@; \ fi -# This makes sure we depend on the NO_PYTHON setting itself. -$(SCRIPT_PYTHON_GEN): GIT-BUILD-OPTIONS +# As with NO_PERL=Y we'll still make GIT-PYTHON-DEFINES if "NO_PYTHON" +# is defined, for creating the "unimplemented.sh" scripts. +PYTHON_DEFINES = +$(SCRIPT_PYTHON_GEN): GIT-PYTHON-DEFINES + +ifdef NO_PYTHON +PYTHON_DEFINES += $(SHELL_PATH_SQ) +PYTHON_DEFINES += $(NO_PYTHON) -ifndef NO_PYTHON -$(SCRIPT_PYTHON_GEN): GIT-CFLAGS GIT-PREFIX GIT-PYTHON-VARS -$(SCRIPT_PYTHON_GEN): % : %.py - $(QUIET_GEN) \ - sed -e '1s|#!.*python|#!$(PYTHON_PATH_SQ)|' \ - $< >$@+ && \ - chmod +x $@+ && \ - mv $@+ $@ -else # NO_PYTHON $(SCRIPT_PYTHON_GEN): % : unimplemented.sh $(QUIET_GEN) \ sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \ @@ -2397,8 +2394,24 @@ $(SCRIPT_PYTHON_GEN): % : unimplemented.sh unimplemented.sh >$@+ && \ chmod +x $@+ && \ mv $@+ $@ +else # NO_PYTHON +PYTHON_DEFINES += $(PYTHON_PATH_SQ) + +$(SCRIPT_PYTHON_GEN): % : %.py GIT-PYTHON-DEFINES + $(QUIET_GEN) \ + sed -e '1s|#!.*python|#!$(PYTHON_PATH_SQ)|' \ + $< >$@+ && \ + chmod +x $@+ && \ + mv $@+ $@ endif # NO_PYTHON +GIT-PYTHON-DEFINES: FORCE + @FLAGS='$(PYTHON_DEFINES)'; \ + if test x"$$FLAGS" != x"`cat $@ 2>/dev/null`" ; then \ + echo >&2 " * new python-specific parameters"; \ + echo "$$FLAGS" >$@; \ + fi + CONFIGURE_RECIPE = sed -e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' \ configure.ac >configure.ac+ && \ autoconf -o configure configure.ac+ && \ @@ -2848,18 +2861,6 @@ else endif @if cmp $@+ $@ >/dev/null 2>&1; then $(RM) $@+; else mv $@+ $@; fi -### Detect Python interpreter path changes -ifndef NO_PYTHON -TRACK_PYTHON = $(subst ','\'',-DPYTHON_PATH='$(PYTHON_PATH_SQ)') - -GIT-PYTHON-VARS: FORCE - @VARS='$(TRACK_PYTHON)'; \ - if test x"$$VARS" != x"`cat $@ 2>/dev/null`" ; then \ - echo >&2 " * new Python interpreter location"; \ - echo "$$VARS" >$@; \ - fi -endif - test_bindir_programs := $(patsubst %,bin-wrappers/%,$(BINDIR_PROGRAMS_NEED_X) $(BINDIR_PROGRAMS_NO_X) $(TEST_PROGRAMS_NEED_X)) all:: $(TEST_PROGRAMS) $(test_bindir_programs) @@ -3256,7 +3257,7 @@ ifndef NO_TCLTK endif $(RM) GIT-VERSION-FILE GIT-CFLAGS GIT-LDFLAGS GIT-BUILD-OPTIONS $(RM) GIT-USER-AGENT GIT-PREFIX - $(RM) GIT-SCRIPT-DEFINES GIT-PERL-DEFINES GIT-PERL-HEADER GIT-PYTHON-VARS + $(RM) GIT-SCRIPT-DEFINES GIT-PERL-DEFINES GIT-PERL-HEADER GIT-PYTHON-DEFINES ifdef MSVC $(RM) $(patsubst %.o,%.o.pdb,$(OBJECTS)) $(RM) $(patsubst %.exe,%.pdb,$(OTHER_PROGRAMS)) From patchwork Wed Nov 17 10:20:10 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12624325 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 85D69C433FE for ; Wed, 17 Nov 2021 10:21:03 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 6DE0E61BF9 for ; Wed, 17 Nov 2021 10:21:03 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236334AbhKQKYA (ORCPT ); Wed, 17 Nov 2021 05:24:00 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56450 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236255AbhKQKXg (ORCPT ); Wed, 17 Nov 2021 05:23:36 -0500 Received: from mail-wm1-x335.google.com (mail-wm1-x335.google.com [IPv6:2a00:1450:4864:20::335]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 71A8AC061746 for ; Wed, 17 Nov 2021 02:20:36 -0800 (PST) Received: by mail-wm1-x335.google.com with SMTP id k37-20020a05600c1ca500b00330cb84834fso4315499wms.2 for ; Wed, 17 Nov 2021 02:20:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=WTjT96qnyBSEcU3Fx1eEPGSBOZakTKcXTsEmD7bMox4=; b=l8/AuIyc4PqrKw+oryJ6oqbcmqIz/O7oJangZPCrna4qQhcgDkLOT7rM2KvmmtFHt1 DowYVriYzYEwPnkjK/pBpEX/rAoHN8iwHdIJfAeULqTMvrkEPnn2QstWVLzLylaBy8cq bnVsiKcLzOlugQCS8Pqn2M8D+Bf8mzGWX6h2r52uIFJcOWPa9XroqnCSgsfiIbE8BJOH cGsEELuVo38D6rEiq8H0G/HP5R9Y78AZDzRGb+0bkwoDPEvp921MpxxgwTi1XKTXJx3H M5SPoZKY7MJkLFRprUUwFGOuG5ttwSOAHMMiI3vMEamYyV5g56eAHBiZZb4JQnBAjDYA UYnA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=WTjT96qnyBSEcU3Fx1eEPGSBOZakTKcXTsEmD7bMox4=; b=HBxHArvsxe+TN6M/PaOzt5pr7UZDt3rALuCTpmnLj9223joP9OPbepWszt2n85ImG5 BMeMKG/0JWSUwK9dUCAJOl0+0pvYRrnJaaNg+dUXZH3j/ax0mevukdSZRvQQMYoPi+O4 VRjjCxVGZec9wvQ3dDcmtHMp7uB/wJplQRCru67/N2dBcHcGLXm3XYyL9IVbjN7bHAJE YKh8eMmyzjTx8wzKpRwdEp0PNuE77LktMVPszW/5A0G9lGC9jrVRLFAtX3zRCTd9b3pN lB7xTYK90oita/oj8L4JBdX70f6ONAvZOtFTfEZ6Aqay0qMfSx1BDIERDZ/2UAukE3Il a3GQ== X-Gm-Message-State: AOAM533jxWrDxzXcemunNt71XL+VwvFYIZlD6fRXRsZpaQ8TyPdE8nkC XcoMJL8ZxbR7J471Q6BdkKddnryKnZx5YA== X-Google-Smtp-Source: ABdhPJzkpLTy7fx5kHjDCZMbDP29A9RID4TaLc0/p/VCFUSA1Il3+/3CgD21khNn9J8o3WALduFD/g== X-Received: by 2002:a1c:5409:: with SMTP id i9mr16040291wmb.146.1637144434829; Wed, 17 Nov 2021 02:20:34 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id n32sm6456256wms.1.2021.11.17.02.20.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Nov 2021 02:20:34 -0800 (PST) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Phillip Wood , Jeff King , Dan Jacques , Eric Wong , Jonathan Nieder , Mike Hommey , =?utf-8?b?xJBvw6BuIFRy4bqnbiBDw7RuZyBEYW5o?= , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= Subject: [PATCH v4 11/23] Makefile: stop needing @@GIT_VERSION@@ in *.perl scripts Date: Wed, 17 Nov 2021 11:20:10 +0100 Message-Id: X-Mailer: git-send-email 2.34.0.796.g2c87ed6146a In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Change the hardcoding of @@GIT_VERSION@@ in generated *.perl scripts to instead shell out to "git version". This means that we can stop re-building during development every time the HEAD changes. These codepaths are not "hot", so shelling out to get the version shouldn't matter to users, in the one case where it potentially would in send-email (the loop for each E-Mail we send) we now cache the value, so we'll only retrieve it once. Signed-off-by: Ævar Arnfjörð Bjarmason --- Makefile | 2 +- git-cvsserver.perl | 6 +++--- git-send-email.perl | 7 ++----- git-svn.perl | 2 +- 4 files changed, 7 insertions(+), 10 deletions(-) diff --git a/Makefile b/Makefile index c698c5b058a..8205614c6ec 100644 --- a/Makefile +++ b/Makefile @@ -2333,7 +2333,7 @@ PERL_HEADER_TEMPLATE = perl/header_templates/runtime_prefix.template.pl perl_localedir_SQ = endif -$(SCRIPT_PERL_GEN): % : %.perl GIT-PERL-DEFINES GIT-PERL-HEADER GIT-VERSION-FILE +$(SCRIPT_PERL_GEN): % : %.perl GIT-PERL-DEFINES GIT-PERL-HEADER $(QUIET_GEN) \ sed -e '1{' \ -e ' s|#!.*perl|#!$(PERL_PATH_SQ)|' \ diff --git a/git-cvsserver.perl b/git-cvsserver.perl index 64319bed43f..76f0e8bbbef 100755 --- a/git-cvsserver.perl +++ b/git-cvsserver.perl @@ -26,8 +26,6 @@ use File::Basename; use Getopt::Long qw(:config require_order no_ignore_case); -my $VERSION = '@@GIT_VERSION@@'; - my $log = GITCVS::log->new(); my $cfg; @@ -126,7 +124,9 @@ or die $usage; if ($state->{version}) { - print "git-cvsserver version $VERSION\n"; + my $version = qx[git version]; + $version =~ s/^(git)\b/$1-cvsserver/; + print $version; exit; } if ($state->{help}) { diff --git a/git-send-email.perl b/git-send-email.perl index 5262d88ee32..041cd2fb96d 100755 --- a/git-send-email.perl +++ b/git-send-email.perl @@ -1468,6 +1468,7 @@ sub file_name_is_absolute { # # If an error occurs sending the email, this just dies. +my $gitversion; sub send_message { my @recipients = unique_email_list(@to); @cc = (grep { my $cc = extract_valid_address_or_die($_); @@ -1478,11 +1479,6 @@ sub send_message { @recipients = unique_email_list(@recipients,@cc,@initial_bcc); @recipients = (map { extract_valid_address_or_die($_) } @recipients); my $date = format_2822_time($time++); - my $gitversion = '@@GIT_VERSION@@'; - if ($gitversion =~ m/..GIT_VERSION../) { - $gitversion = Git::version(); - } - my $cc = join(",\n\t", unique_email_list(@cc)); my $ccline = ""; if ($cc ne '') { @@ -1497,6 +1493,7 @@ sub send_message { Message-Id: $message_id "; if ($use_xmailer) { + $gitversion ||= Git::version(); $header .= "X-Mailer: git-send-email $gitversion\n"; } if ($in_reply_to) { diff --git a/git-svn.perl b/git-svn.perl index be987e316f9..727431412be 100755 --- a/git-svn.perl +++ b/git-svn.perl @@ -9,7 +9,6 @@ $_revision $_repository $_q $_authors $_authors_prog %users/; $AUTHOR = 'Eric Wong '; -$VERSION = '@@GIT_VERSION@@'; use Carp qw/croak/; use File::Basename qw/dirname basename/; @@ -47,6 +46,7 @@ command_close_bidi_pipe get_record ); +$VERSION = Git::version(); BEGIN { Memoize::memoize 'Git::config'; From patchwork Wed Nov 17 10:20:11 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12624313 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 46C82C4332F for ; Wed, 17 Nov 2021 10:21:04 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 2F2F061BFA for ; Wed, 17 Nov 2021 10:21:04 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236285AbhKQKYB (ORCPT ); Wed, 17 Nov 2021 05:24:01 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56476 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236257AbhKQKXg (ORCPT ); Wed, 17 Nov 2021 05:23:36 -0500 Received: from mail-wm1-x329.google.com (mail-wm1-x329.google.com [IPv6:2a00:1450:4864:20::329]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4510CC06121D for ; Wed, 17 Nov 2021 02:20:37 -0800 (PST) Received: by mail-wm1-x329.google.com with SMTP id y196so1676575wmc.3 for ; Wed, 17 Nov 2021 02:20:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=uIMnDR8U8vhdWM6hlpK4KCai6LoGDFCGRmov9GEwmjs=; b=IDC3JgHpzhMyIsffGAhGsYqsj3Wi6sR9m3h89MaAhnO3j71zxIjaC32HhpfSNyrJCw ZoFF4IvDdYFiMH5veVMf1pMYk89mEBqFKX/+Bj/jrxGju8zs5L+DaKjolRTBG/w/ZD3Y nDizNGBloJorCUhgEKwKWHngPx4Gg/Wndhb90k9gNiXywCUQr03Miy25AGsLXY4mcstC gFpOB48lhpZHdYL5Z0+aD/T6w0LKosJ7bJ3ftYuPqaEadPNTzMXkY/rPl6b/xKD+IUMR TqMqHHBMApjY+DZ80d76qvm85KAdSvD9EIq8+pcc1e7TB3V2AZO+7VY3ULj9mBEZPsdo VcqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=uIMnDR8U8vhdWM6hlpK4KCai6LoGDFCGRmov9GEwmjs=; b=F8Z/fnmyiE484gnQp3cWFuFi5PsrDSAgssMYla1Qh1Scgcff/zekmzrw01SpAHLzAj cbTetrYpBKQAHmc6+Y9QNp3K3QZzN/7IKzjdpFBz2OuoA1GDdyYt7CZqZ03epXDh7KLI Pli1+ZxBo75q0HRTTCHxJfJ7ZgTrk1GKtk6XAdcimPZU1QihPjJ2S2R8QY120yod/ctH MsG0W3VXM2gslc9BK6Gk1Qf7NQsheS7pP/bUEN86MUf4hpG+odhfdWLKPRqn1EsZ7zC+ SVGDyAEfXD8gITK9rItsvkqKG8qWk88QT9CY7e0P8n4gB+VIteu5mxxRGDN+VPCbS4BE WMvQ== X-Gm-Message-State: AOAM533ZhE/Cx8iYvPzpst4y/7rXUQ5lgV3p+HhMGdADdxJrvkyaA3IC /L1+hhle/jEAaXApxtlUdjMZzlBA5Z3fuQ== X-Google-Smtp-Source: ABdhPJyUjSDeiRe88yp/v/nnZBAcdEeJCwtjst+GUoBEp4OY5wHzNdRAtqB0YiNdGhh+wCuv/rDFCg== X-Received: by 2002:a05:600c:21c3:: with SMTP id x3mr16169938wmj.13.1637144435640; Wed, 17 Nov 2021 02:20:35 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id n32sm6456256wms.1.2021.11.17.02.20.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Nov 2021 02:20:35 -0800 (PST) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Phillip Wood , Jeff King , Dan Jacques , Eric Wong , Jonathan Nieder , Mike Hommey , =?utf-8?b?xJBvw6BuIFRy4bqnbiBDw7RuZyBEYW5o?= , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= Subject: [PATCH v4 12/23] Makefiles: add "shared.mak", move ".DELETE_ON_ERROR" to it Date: Wed, 17 Nov 2021 11:20:11 +0100 Message-Id: X-Mailer: git-send-email 2.34.0.796.g2c87ed6146a In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org We have various behavior that's shared across our Makefiles, or that really should be (e.g. via defined templates). Let's create a top-level "shared.mak" to house those sorts of things, and start by adding the ".DELETE_ON_ERROR" flag to it. See my own 7b76d6bf221 (Makefile: add and use the ".DELETE_ON_ERROR" flag, 2021-06-29) and db10fc6c09f (doc: simplify Makefile using .DELETE_ON_ERROR, 2021-05-21) for the addition and use of the ".DELETE_ON_ERROR" flag. This does have the potential downside that if e.g. templates/Makefile would like to include this "shared.mak" in the future the semantics of such a Makefile will change, but as noted in the above commits (and GNU make's own documentation) any such change would be for the better, so it's safe to do this. This also doesn't introduce a bug by e.g. having this ".DELETE_ON_ERROR" flag only apply to this new shared.mak, Makefiles have no such scoping semantics. Signed-off-by: Ævar Arnfjörð Bjarmason --- Documentation/Makefile | 6 +++--- Makefile | 13 +++---------- shared.mak | 9 +++++++++ 3 files changed, 15 insertions(+), 13 deletions(-) create mode 100644 shared.mak diff --git a/Documentation/Makefile b/Documentation/Makefile index ed656db2ae9..ba27456c86a 100644 --- a/Documentation/Makefile +++ b/Documentation/Makefile @@ -1,3 +1,6 @@ +# Import tree-wide shared Makefile behavior and libraries +include ../shared.mak + # Guard against environment variables MAN1_TXT = MAN5_TXT = @@ -524,7 +527,4 @@ doc-l10n install-l10n:: $(MAKE) -C po $@ endif -# Delete the target file on error -.DELETE_ON_ERROR: - .PHONY: FORCE diff --git a/Makefile b/Makefile index 8205614c6ec..5ae7d012cfb 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,6 @@ +# Import tree-wide shared Makefile behavior and libraries +include shared.mak + # The default target of this Makefile is... all:: @@ -2158,16 +2161,6 @@ shell_compatibility_test: please_set_SHELL_PATH_to_a_more_modern_shell strip: $(PROGRAMS) git$X $(STRIP) $(STRIP_OPTS) $^ -### Flags affecting all rules - -# A GNU make extension since gmake 3.72 (released in late 1994) to -# remove the target of rules if commands in those rules fail. The -# default is to only do that if make itself receives a signal. Affects -# all targets, see: -# -# info make --index-search=.DELETE_ON_ERROR -.DELETE_ON_ERROR: - ### Target-specific flags and dependencies # The generic compilation pattern rule and automatically diff --git a/shared.mak b/shared.mak new file mode 100644 index 00000000000..0170bb397ae --- /dev/null +++ b/shared.mak @@ -0,0 +1,9 @@ +### Flags affecting all rules + +# A GNU make extension since gmake 3.72 (released in late 1994) to +# remove the target of rules if commands in those rules fail. The +# default is to only do that if make itself receives a signal. Affects +# all targets, see: +# +# info make --index-search=.DELETE_ON_ERROR +.DELETE_ON_ERROR: From patchwork Wed Nov 17 10:20:12 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12624315 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D62D8C43219 for ; Wed, 17 Nov 2021 10:21:05 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id BC22461BAA for ; Wed, 17 Nov 2021 10:21:05 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236217AbhKQKYC (ORCPT ); Wed, 17 Nov 2021 05:24:02 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56442 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236267AbhKQKXg (ORCPT ); Wed, 17 Nov 2021 05:23:36 -0500 Received: from mail-wm1-x32a.google.com (mail-wm1-x32a.google.com [IPv6:2a00:1450:4864:20::32a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 254E5C061225 for ; Wed, 17 Nov 2021 02:20:38 -0800 (PST) Received: by mail-wm1-x32a.google.com with SMTP id i8-20020a7bc948000000b0030db7b70b6bso4328475wml.1 for ; Wed, 17 Nov 2021 02:20:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=jb8je/FoaWUCxv+AiTlIVfJkvF668xYYfN68CxBmxJw=; b=allnHQjaHVhiYGnqxuba/mKeBGIQGCdXf0AxBdstFB+ValHq4EVhcsPqJpofos+0U7 mj0Rc+FBfCZzdGgjMW4qt+NfAZzMYakXy418r6JgqVIeA1xsI9AN+uHtBTPzpuZlk3jG oGqgXPMyPtJioRL6crV1MPZUTZPk7kBHuJf5vOmXIr8e9u/A86z/cCF4zcdutXaNXooV 9o7nffWX5Tjt6zG/PKQ5tSiD5Up/xoyW/0G3/9JFhflAHP2nJCuCpVXxKTn0mG4+IU1g 3Bc9I/BvR3vOsck4JhedT6C1Q5zdVporesugnNpqjJrXNqNI49fABXRWGwHDkgdjgCio TGJg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=jb8je/FoaWUCxv+AiTlIVfJkvF668xYYfN68CxBmxJw=; b=oMruIGuURbXphoLtk3CllwEAZzt3cbnouHrTsY8bZDg60U9epFgQ4cZhVxnfjdFKiK 6G1m1H7FRZlFsV5xXhPWDkqw1ikP3lh+vRIxBbLWiE8SYVoUGvwENYjdr+q4JZq+H85T XyzVPgb7hzsXzKFvzqKqGqnKseTIRUiiytyWNqchPRw/BTcQ8617JH8txYOVLj798bu8 RPSRebYpikYquNu7HrRqYLggJA7GCwjohR9gJgkYOEL9ShDiGQSJXXv+1LEN45jZ/kOI 53mBGwPx8uANURkAEBIelpFpJRoevR/t4dVAvnVs3qgrfWqlFKgFtqKdF7JlcR6KVY39 QGEw== X-Gm-Message-State: AOAM532rUGXB4xlo1F1kHQb8EvV9xrhadb760brJXjn6ucaxxnEZRJEO 5MUsJG3j2jnNRGFZ2EPiqR+yZCQsa1fmeA== X-Google-Smtp-Source: ABdhPJxQlHQLkLAZClsXibHdedOEIEmyKT2kM6/BsrrQkBsjRSjsI7RMwo6x+jsmr9Ye3t1UmCIjVw== X-Received: by 2002:a1c:4681:: with SMTP id t123mr77350263wma.83.1637144436511; Wed, 17 Nov 2021 02:20:36 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id n32sm6456256wms.1.2021.11.17.02.20.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Nov 2021 02:20:35 -0800 (PST) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Phillip Wood , Jeff King , Dan Jacques , Eric Wong , Jonathan Nieder , Mike Hommey , =?utf-8?b?xJBvw6BuIFRy4bqnbiBDw7RuZyBEYW5o?= , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= Subject: [PATCH v4 13/23] Makefile: move $(comma), $(empty) and $(space) to shared.mak Date: Wed, 17 Nov 2021 11:20:12 +0100 Message-Id: X-Mailer: git-send-email 2.34.0.796.g2c87ed6146a In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Move these variables over to the shared.max, we'll make use of them in a subsequent commit. There was no reason for these to be "simply expanded variables", so let's use the normal lazy "=" assignment here. See 425ca6710b2 (Makefile: allow combining UBSan with other sanitizers, 2017-07-15) for the commit that introduced these. Signed-off-by: Ævar Arnfjörð Bjarmason --- Makefile | 4 ---- shared.mak | 8 ++++++++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 5ae7d012cfb..7130e32a251 100644 --- a/Makefile +++ b/Makefile @@ -1252,10 +1252,6 @@ endif ALL_CFLAGS = $(DEVELOPER_CFLAGS) $(CPPFLAGS) $(CFLAGS) ALL_LDFLAGS = $(LDFLAGS) -comma := , -empty := -space := $(empty) $(empty) - ifdef SANITIZE SANITIZERS := $(foreach flag,$(subst $(comma),$(space),$(SANITIZE)),$(flag)) BASIC_CFLAGS += -fsanitize=$(SANITIZE) -fno-sanitize-recover=$(SANITIZE) diff --git a/shared.mak b/shared.mak index 0170bb397ae..2d597ef7603 100644 --- a/shared.mak +++ b/shared.mak @@ -7,3 +7,11 @@ # # info make --index-search=.DELETE_ON_ERROR .DELETE_ON_ERROR: + +### Global variables + +## comma, empty, space: handy variables as these tokens are either +## special or can be hard to spot among other Makefile syntax. +comma = , +empty = +space = $(empty) $(empty) From patchwork Wed Nov 17 10:20:13 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12624317 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6CE80C433EF for ; Wed, 17 Nov 2021 10:21:07 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 5600061BF9 for ; Wed, 17 Nov 2021 10:21:07 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236252AbhKQKYE (ORCPT ); Wed, 17 Nov 2021 05:24:04 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56488 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236210AbhKQKXh (ORCPT ); Wed, 17 Nov 2021 05:23:37 -0500 Received: from mail-wm1-x32a.google.com (mail-wm1-x32a.google.com [IPv6:2a00:1450:4864:20::32a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 07F89C061208 for ; Wed, 17 Nov 2021 02:20:38 -0800 (PST) Received: by mail-wm1-x32a.google.com with SMTP id az33-20020a05600c602100b00333472fef04so4307209wmb.5 for ; Wed, 17 Nov 2021 02:20:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=8u9bMfK9/FBZDFFxq6YiVdA2m6F8RsMYbB/0iz+4l08=; b=opqAdFW8zQJOrZKkhqzCqJD1uW1XwFDlZyy6rpqTVdD1noXBH/KsPx9Cwj7GYnuSJW 0jdYBSb9ZtFm/UE1IkEweOoqfY7llH7FldFRGg6ERTnO0J7IbwTHZkpUNHWHhA2Y6axz /H2N6UdhR6CEGkQEZ9LPjuGHVn84eliXQ1ifslDOAFQvNKt0j4Lai0E0uA19pVH5G9kA QyBPMg9XvENcLTf2Aj46sWE6nH0uQlxRsVl0SOj0vTT6/bY0kiNfDp/GigSuqOlBLG9J EBqDCR2aAZNMHZ2q9lKHnUpGFikn0EUOMWrq11UoT2VKuC1DLSSqmvZgPlqvHAqi0gJL mysQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=8u9bMfK9/FBZDFFxq6YiVdA2m6F8RsMYbB/0iz+4l08=; b=JsxQ9OzhJIRw5NIpaUz4YvvMEI9vnvLF/2H3I0y4PvmXM8x3fLsMe2kqeOcAIaXNcM 8XM+CX4gJJjzWKh51Srx57xxDXcT/UPVuAcRSsvpfKG2ouc+SMnPjAr3ONSmzWuNs5fh ETLflyPPQMt3EQ/Qblc/FZeVjzLdROALdfRbcN2zToDCr/T4hTCpsf8p6v0W1j1ky+uM KP6VXl3chb8Td6MdqbIj4bzAMOFbGW2fMRYQFCz2fT17qUZjNqqoJtif8D30jpZSBM3o aJRQm89RNAxPsRhNjahc+xKdOkR5LRTmfcoNE48oq10ITsIWnzM8adRJr8nJbSpI3Xs2 Zuyg== X-Gm-Message-State: AOAM532nEul7pFEumhER1TuMXBGosjLKos04ZjGtHk5vbeCLU9+eDv4B kvqd3h7HrBW/rpoLwFNQKByTOyuBeCoOGg== X-Google-Smtp-Source: ABdhPJxCgHzFaQEhroEgF8kbPJO1GyebQq4ovQ4VwNF4GUwwG/mQ4hYtmxx9Hs0/lu4WUbicl/kGmA== X-Received: by 2002:a7b:c4c4:: with SMTP id g4mr15846105wmk.93.1637144437259; Wed, 17 Nov 2021 02:20:37 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id n32sm6456256wms.1.2021.11.17.02.20.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Nov 2021 02:20:36 -0800 (PST) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Phillip Wood , Jeff King , Dan Jacques , Eric Wong , Jonathan Nieder , Mike Hommey , =?utf-8?b?xJBvw6BuIFRy4bqnbiBDw7RuZyBEYW5o?= , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= Subject: [PATCH v4 14/23] Makefile: re-add and use the "shellquote" macros Date: Wed, 17 Nov 2021 11:20:13 +0100 Message-Id: X-Mailer: git-send-email 2.34.0.796.g2c87ed6146a In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Re-add and use, and expand on "shellquote" macros added in 4769948afe7 (Deal with $(bindir) and friends with whitespaces., 2005-10-10). We avoided using them due to the "$(call)" feature of GNU make being relatively new at the time, but it isn't anymore. We hard depend on GNU make versions that have it. The use of "$(call)" was removed in 39c015c556f (Fixes for ancient versions of GNU make, 2006-02-18) and 7ffe7098dca (Fix installation of templates on ancient systems., 2006-07-29) due to those incompatibilities with older GNU make versions, and we've used the more verbose *_SQ pattern ever since. The "$(call)" feature was introduced in GNU make version 3.78, released on the 22nd of September, 1999. That release also introduced "$(error)" and "$(warning)", which we've been making use of since f2fabbf76e4 (Teach Makefile to check header dependencies, 2010-01-26). This extends upon the macros added in 4769948afe7: We now have macros for quoting a ' inside '', and a ' with no surrounding '' as before. Additionally provide and use a "shelldquote" macro along with "shellquote" for the common case of wanting to quote a C string we pass to the compiler with a -D flag. This doesn't get rid of all of our shell quoting. We've still got some in the main Makefile, let's leave most of it to avoid in-flight conflicts. I've fully converted "templates/Makefile" and "t/Makefile" though. Signed-off-by: Ævar Arnfjörð Bjarmason --- Makefile | 15 +++++---------- shared.mak | 14 ++++++++++++++ t/Makefile | 34 +++++++++++++++------------------- templates/Makefile | 14 +++++--------- 4 files changed, 39 insertions(+), 38 deletions(-) diff --git a/Makefile b/Makefile index 7130e32a251..b458c24d95e 100644 --- a/Makefile +++ b/Makefile @@ -1996,11 +1996,7 @@ ifneq ("$(PROFILE)","") endif endif -# Shell quote (do not use $(call) to accommodate ancient setups); - -ETC_GITCONFIG_SQ = $(subst ','\'',$(ETC_GITCONFIG)) -ETC_GITATTRIBUTES_SQ = $(subst ','\'',$(ETC_GITATTRIBUTES)) - +# Shell quote, should be changed to use $(call shellquote,...) DESTDIR_SQ = $(subst ','\'',$(DESTDIR)) NO_GETTEXT_SQ = $(subst ','\'',$(NO_GETTEXT)) bindir_SQ = $(subst ','\'',$(bindir)) @@ -2535,11 +2531,11 @@ builtin/init-db.sp builtin/init-db.s builtin/init-db.o: EXTRA_CPPFLAGS = \ config.sp config.s config.o: GIT-PREFIX config.sp config.s config.o: EXTRA_CPPFLAGS = \ - -DETC_GITCONFIG='"$(ETC_GITCONFIG_SQ)"' + -DETC_GITCONFIG=$(call shelldquote,$(ETC_GITCONFIG)) attr.sp attr.s attr.o: GIT-PREFIX attr.sp attr.s attr.o: EXTRA_CPPFLAGS = \ - -DETC_GITATTRIBUTES='"$(ETC_GITATTRIBUTES_SQ)"' + -DETC_GITATTRIBUTES=$(call shelldquote,$(ETC_GITATTRIBUTES)) gettext.sp gettext.s gettext.o: GIT-PREFIX gettext.sp gettext.s gettext.o: EXTRA_CPPFLAGS = \ @@ -2700,14 +2696,13 @@ perl/build/lib/%.pm: perl/%.pm GIT-PERL-DEFINES $(QUIET_GEN)mkdir -p $(dir $@) && \ sed -e 's|@@LOCALEDIR@@|$(perl_localedir_SQ)|g' \ -e 's|@@NO_GETTEXT@@|$(NO_GETTEXT_SQ)|g' \ - -e 's|@@NO_PERL_CPAN_FALLBACKS@@|$(NO_PERL_CPAN_FALLBACKS_SQ)|g' \ + -e 's|@@NO_PERL_CPAN_FALLBACKS@@|$(call shq,$(NO_PERL_CPAN_FALLBACKS))|g' \ < $< > $@ all:: $(LIB_PERL_GEN) ifndef NO_PERL_CPAN_FALLBACKS all:: $(LIB_CPAN_GEN) endif -NO_PERL_CPAN_FALLBACKS_SQ = $(subst ','\'',$(NO_PERL_CPAN_FALLBACKS)) endif # install-man depends on Git.3pm even with NO_PERL=Y @@ -3021,7 +3016,7 @@ else $(INSTALL) $(vcpkg_dbg_bin)/*.pdb '$(DESTDIR_SQ)$(bindir_SQ)' endif endif - $(MAKE) -C templates DESTDIR='$(DESTDIR_SQ)' install + $(MAKE) -C templates DESTDIR=$(call shellquote,$(DESTDIR)) install $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(mergetools_instdir_SQ)' $(INSTALL) -m 644 mergetools/* '$(DESTDIR_SQ)$(mergetools_instdir_SQ)' ifndef NO_GETTEXT diff --git a/shared.mak b/shared.mak index 2d597ef7603..ef03c2bc094 100644 --- a/shared.mak +++ b/shared.mak @@ -8,6 +8,20 @@ # info make --index-search=.DELETE_ON_ERROR .DELETE_ON_ERROR: +### Quoting helpers + +## Quote a ' inside a '': FOO='$(call shq,$(BAR))' +shq = $(subst ','\'',$(1)) + +## Quote a ' and provide a '': FOO=$(call shq,$(BAR)) +shellquote = '$(call shq,$(1))' + +## Quote a " inside a "" +shdq = $(subst ",\",$(1)) + +## Quote ' for the shell, and embedded " for C: -DFOO=$(call shelldquote,$(BAR)) +shelldquote = '"$(call shdq,$(call shq,$(1)))"' + ### Global variables ## comma, empty, space: handy variables as these tokens are either diff --git a/t/Makefile b/t/Makefile index 882d26eee30..4168b5c6ce6 100644 --- a/t/Makefile +++ b/t/Makefile @@ -1,3 +1,6 @@ +# Import tree-wide shared Makefile behavior and libraries +include ../shared.mak + # Run tests # # Copyright (c) 2005 Junio C Hamano @@ -24,13 +27,6 @@ TEST_RESULTS_DIRECTORY = test-results CHAINLINTTMP = chainlinttmp endif -# Shell quote; -SHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH)) -TEST_SHELL_PATH_SQ = $(subst ','\'',$(TEST_SHELL_PATH)) -PERL_PATH_SQ = $(subst ','\'',$(PERL_PATH)) -TEST_RESULTS_DIRECTORY_SQ = $(subst ','\'',$(TEST_RESULTS_DIRECTORY)) -CHAINLINTTMP_SQ = $(subst ','\'',$(CHAINLINTTMP)) - T = $(sort $(wildcard t[0-9][0-9][0-9][0-9]-*.sh)) TGITWEB = $(sort $(wildcard t95[0-9][0-9]-*.sh)) THELPERS = $(sort $(filter-out $(T),$(wildcard *.sh))) @@ -44,38 +40,38 @@ test: pre-clean check-chainlint $(TEST_LINT) $(MAKE) aggregate-results-and-cleanup failed: - @failed=$$(cd '$(TEST_RESULTS_DIRECTORY_SQ)' && \ + @failed=$$(cd $(call shellquote,$(TEST_RESULTS_DIRECTORY)) && \ grep -l '^failed [1-9]' *.counts | \ sed -n 's/\.counts$$/.sh/p') && \ test -z "$$failed" || $(MAKE) $$failed prove: pre-clean check-chainlint $(TEST_LINT) - @echo "*** prove ***"; $(PROVE) --exec '$(TEST_SHELL_PATH_SQ)' $(GIT_PROVE_OPTS) $(T) :: $(GIT_TEST_OPTS) + @echo "*** prove ***"; $(PROVE) --exec $(call shellquote,$(SHELL_PATH)) $(GIT_PROVE_OPTS) $(T) :: $(GIT_TEST_OPTS) $(MAKE) clean-except-prove-cache $(T): - @echo "*** $@ ***"; '$(TEST_SHELL_PATH_SQ)' $@ $(GIT_TEST_OPTS) + @echo "*** $@ ***"; $(call shellquote,$(SHELL_PATH)) $@ $(GIT_TEST_OPTS) pre-clean: - $(RM) -r '$(TEST_RESULTS_DIRECTORY_SQ)' + $(RM) -r $(call shellquote,$(TEST_RESULTS_DIRECTORY)) clean-except-prove-cache: clean-chainlint - $(RM) -r 'trash directory'.* '$(TEST_RESULTS_DIRECTORY_SQ)' + $(RM) -r 'trash directory'.* $(call shellquote,$(TEST_RESULTS_DIRECTORY)) $(RM) -r valgrind/bin clean: clean-except-prove-cache $(RM) .prove clean-chainlint: - $(RM) -r '$(CHAINLINTTMP_SQ)' + $(RM) -r $(call shellquote,$(CHAINLINTTMP)) check-chainlint: - @mkdir -p '$(CHAINLINTTMP_SQ)' && \ + @mkdir -p $(call shellquote,$(CHAINLINTTMP)) && \ err=0 && \ for i in $(CHAINLINTTESTS); do \ $(CHAINLINT) '$(CHAINLINTTMP_SQ)'/$$i.actual && \ - diff -u chainlint/$$i.expect '$(CHAINLINTTMP_SQ)'/$$i.actual || err=1; \ + sed -e '/^# LINT: /d' >$(call shellquote,$(CHAINLINTTMP))/$$i.actual && \ + diff -u chainlint/$$i.expect $(call shellquote,$(CHAINLINTTMP))/$$i.actual || err=1; \ done && exit $$err test-lint: test-lint-duplicates test-lint-executable test-lint-shell-syntax \ @@ -92,7 +88,7 @@ test-lint-executable: echo >&2 "non-executable tests:" $$bad; exit 1; } test-lint-shell-syntax: - @'$(PERL_PATH_SQ)' check-non-portable-shell.pl $(T) $(THELPERS) $(TPERF) + @$(call shellquote,$(PERL_PATH)) check-non-portable-shell.pl $(T) $(THELPERS) $(TPERF) test-lint-filenames: @# We do *not* pass a glob to ls-files but use grep instead, to catch @@ -107,9 +103,9 @@ aggregate-results-and-cleanup: $(T) $(MAKE) clean aggregate-results: - for f in '$(TEST_RESULTS_DIRECTORY_SQ)'/t*-*.counts; do \ + for f in $(call shellquote,$(TEST_RESULTS_DIRECTORY))/t*-*.counts; do \ echo "$$f"; \ - done | '$(SHELL_PATH_SQ)' ./aggregate-results.sh + done | $(call shellquote,$(SHELL_PATH)) ./aggregate-results.sh gitweb-test: $(MAKE) $(TGITWEB) diff --git a/templates/Makefile b/templates/Makefile index d22a71a3999..c9251a96622 100644 --- a/templates/Makefile +++ b/templates/Makefile @@ -1,3 +1,6 @@ +# Import tree-wide shared Makefile behavior and libraries +include ../shared.mak + # make and install sample templates ifndef V @@ -18,13 +21,6 @@ ifndef PERL_PATH PERL_PATH = perl endif -SHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH)) -PERL_PATH_SQ = $(subst ','\'',$(PERL_PATH)) - -# Shell quote (do not use $(call) to accommodate ancient setups); -DESTDIR_SQ = $(subst ','\'',$(DESTDIR)) -template_instdir_SQ = $(subst ','\'',$(template_instdir)) - all: boilerplates.made custom # Put templates that can be copied straight from the source @@ -61,6 +57,6 @@ clean: $(RM) -r blt boilerplates.made install: all - $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(template_instdir_SQ)' + $(INSTALL) -d -m755 $(call shellquote,$(DESTDIR)$(template_instdir)) (cd blt && $(TAR) cf - .) | \ - (cd '$(DESTDIR_SQ)$(template_instdir_SQ)' && umask 022 && $(TAR) xof -) + (cd $(call shellquote,$(DESTDIR)$(template_instdir)) && umask 022 && $(TAR) xof -) From patchwork Wed Nov 17 10:20:14 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12624319 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4242DC433F5 for ; Wed, 17 Nov 2021 10:21:08 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 22D6F61BF9 for ; Wed, 17 Nov 2021 10:21:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236272AbhKQKYF (ORCPT ); Wed, 17 Nov 2021 05:24:05 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56466 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236271AbhKQKXi (ORCPT ); Wed, 17 Nov 2021 05:23:38 -0500 Received: from mail-wm1-x336.google.com (mail-wm1-x336.google.com [IPv6:2a00:1450:4864:20::336]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D545EC061764 for ; Wed, 17 Nov 2021 02:20:39 -0800 (PST) Received: by mail-wm1-x336.google.com with SMTP id f7-20020a1c1f07000000b0032ee11917ceso1707352wmf.0 for ; Wed, 17 Nov 2021 02:20:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=XKmWCiCaWjvjUcpm4uTFqMmQQhf1vsTAN00gj/kn0W0=; b=HTOSravBpaTNs5N9kMjfEXI2TvxaNf5e8FfZMReNmGetLLOmXIDvTSJwdSUZajgBS3 uAPR/9X+GEw0x/ea8gn/fYx9PWLBbBZhY1Chq2cIjJVjk+3VjDv5QX7fARQsavg+wEYI ewVWTZP2b+B/djSwxUPQAPO2hkxnfzWFh89UodlEuCbftDBhqBgUO8YgzanZU5rPOVAY YPUHg5WQ48bZD8POCpTkc0/GQBaCN9u69hHPqPbJJKYGD4vpryVcvmt2kynKhPTfBd/u /5coDFJcMG77fqx+G0DFrCy7+reoLMGO962HPvLr1HN4gsvstxsYUBs6zVzhYOv70meA Edjw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=XKmWCiCaWjvjUcpm4uTFqMmQQhf1vsTAN00gj/kn0W0=; b=jU8pkY+p9EXDso+9aMHBLKDrcqeZ8zdVP7/Hj71RbkiODfYFSK9EvJ/tDkoVCsVow1 FxLljK84wXdaeqp/03YqZiMEU8G785c8zhRvD4klP7LpcsCuJe+QUAwO4qQeawmujEjS xup3Wsw07oLCPmllwZ3cXWC5Bwszg9tTYxa1ktJK22rLyfBpOdLQo5hWrGxvaoj/amt2 Sw217r11Q9Gt4WJf8cPhJkOVs2s+NU+HGOs+01aB8w9HwcNCf6L5nxcH7tP+5Z3f5JWN FIsWzl6ZGq4CCX7L2RHhBFPlGAy2X6PTZJPhIlo4lpB1UaVaoDaSZcintUrJ0cpm65EM 4QEQ== X-Gm-Message-State: AOAM532VgeZPU2vtWBY/LCgKmXu69ASZulhsb/iEtUBRK49UAc7S8rUn 5aYMp9iflmNH+rC/9ZBP7W7i7uISimi1bg== X-Google-Smtp-Source: ABdhPJw1zH6tREk5Dcab9Hc8b4Dc+u9PtQNXthHTuc+omKby08QoPjNknmVjGryGIiJ5ekf1iGilEw== X-Received: by 2002:a05:600c:3586:: with SMTP id p6mr78605229wmq.34.1637144438121; Wed, 17 Nov 2021 02:20:38 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id n32sm6456256wms.1.2021.11.17.02.20.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Nov 2021 02:20:37 -0800 (PST) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Phillip Wood , Jeff King , Dan Jacques , Eric Wong , Jonathan Nieder , Mike Hommey , =?utf-8?b?xJBvw6BuIFRy4bqnbiBDw7RuZyBEYW5o?= , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= Subject: [PATCH v4 15/23] Makefile: add a "TRACK_template" for GIT-*{FLAGS,DEFINES,...} Date: Wed, 17 Nov 2021 11:20:14 +0100 Message-Id: X-Mailer: git-send-email 2.34.0.796.g2c87ed6146a In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Move the mostly copy/pasted code in the "Makefile" and "Documentation/Makefile" which FORCE-generates a file based on a variable in play in the Makefile to use a template. This will make it easier later on to move these to rules that aren't FORCE-run using optional gmake 4.2+ features, but for now just getting rid of the repetition is worth it. The message for the new generated rule will say whether or not we're generating the file for the first time, as opposed to the old messages saying "new" whether we had flag modifications, or were building for the first time. Example output before: $ make clean [...] $ make GIT_VERSION = 2.34.0-rc1-dev * new build flags CC grep.o $ make CFLAGS=-I$RANDOM grep.o * new build flags CC grep.o After: $ make clean [...] $ make grep.o GIT_VERSION = 2.34.0-rc1-dev GIT-CFLAGS PARAMETERS (new) CC grep.o $ make CFLAGS=-I$RANDOM grep.o GIT-CFLAGS PARAMETERS (changed) CC grep.o Note: It's important that "@FLAGS" here be defined as '$$($(2))', and not the eagerly expanded '$($(2))'. The latter will break if e.g. curl-config isn't installed, since we'll end up recursively expanding that part of the variable even if NO_CURL isn't defined, which happens e.g. for the "check-docs" target in CI. We're also introducing a $(wspfx) variable here to control the whitespace prefixing. It matches the $(QUIET...) variables, who'll be using these variables in a subsequent commit. Note that it's important that we call the shell quote escaping macros inline (or equivalent), because if we'd like variables to be overridable we need to support e.g.: $ make CFLAGS=-I$RANDOM grep.o wspfx='$(space)->' -> GIT-CFLAGS PARAMETERS (changed) CC grep.o If we simply quoted and used $(wspfx) then the user would need to provide us with a quoted version, so there's still some use-cases for these $(*_sq) variables. It could also be done inline, but that's a lot more verbose. Signed-off-by: Ævar Arnfjörð Bjarmason --- Documentation/Makefile | 8 +------ Makefile | 51 ++++++------------------------------------ shared.mak | 22 ++++++++++++++++++ 3 files changed, 30 insertions(+), 51 deletions(-) diff --git a/Documentation/Makefile b/Documentation/Makefile index ba27456c86a..4a939cc2c25 100644 --- a/Documentation/Makefile +++ b/Documentation/Makefile @@ -343,13 +343,7 @@ mergetools-list.made: ../git-mergetool--lib.sh $(wildcard ../mergetools/*) date >$@ TRACK_ASCIIDOCFLAGS = $(subst ','\'',$(ASCIIDOC_COMMON):$(ASCIIDOC_HTML):$(ASCIIDOC_DOCBOOK)) - -GIT-ASCIIDOCFLAGS: FORCE - @FLAGS='$(TRACK_ASCIIDOCFLAGS)'; \ - if test x"$$FLAGS" != x"`cat GIT-ASCIIDOCFLAGS 2>/dev/null`" ; then \ - echo >&2 " * new asciidoc flags"; \ - echo "$$FLAGS" >GIT-ASCIIDOCFLAGS; \ - fi +$(eval $(call TRACK_template,GIT-ASCIIDOCFLAGS,TRACK_ASCIIDOCFLAGS)) clean: $(RM) -rf .build/ diff --git a/Makefile b/Makefile index b458c24d95e..c8a0a1586ca 100644 --- a/Makefile +++ b/Makefile @@ -2087,10 +2087,7 @@ endif GIT_USER_AGENT_SQ = $(subst ','\'',$(GIT_USER_AGENT)) GIT_USER_AGENT_CQ = "$(subst ",\",$(subst \,\\,$(GIT_USER_AGENT)))" GIT_USER_AGENT_CQ_SQ = $(subst ','\'',$(GIT_USER_AGENT_CQ)) -GIT-USER-AGENT: FORCE - @if test x'$(GIT_USER_AGENT_SQ)' != x"`cat GIT-USER-AGENT 2>/dev/null`"; then \ - echo '$(GIT_USER_AGENT_SQ)' >GIT-USER-AGENT; \ - fi +$(eval $(call TRACK_template,GIT-USER-AGENT,GIT_USER_AGENT_SQ)) ifdef DEFAULT_HELP_FORMAT BASIC_CFLAGS += -DDEFAULT_HELP_FORMAT='"$(DEFAULT_HELP_FORMAT)"' @@ -2238,12 +2235,7 @@ SCRIPT_DEFINES = $(SHELL_PATH_SQ):$(DIFF_SQ):\ $(localedir_SQ):$(USE_GETTEXT_SCHEME):$(SANE_TOOL_PATH_SQ):\ $(gitwebdir_SQ):$(PERL_PATH_SQ):$(PAGER_ENV):\ $(perllibdir_SQ) -GIT-SCRIPT-DEFINES: FORCE - @FLAGS='$(SCRIPT_DEFINES)'; \ - if test x"$$FLAGS" != x"`cat $@ 2>/dev/null`" ; then \ - echo >&2 " * new script parameters"; \ - echo "$$FLAGS" >$@; \ - fi +$(eval $(call TRACK_template,GIT-SCRIPT-DEFINES,SCRIPT_DEFINES)) define cmd_munge_script sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \ @@ -2355,13 +2347,7 @@ git-instaweb: git-instaweb.sh GIT-SCRIPT-DEFINES chmod +x $@+ && \ mv $@+ $@ endif # NO_PERL - -GIT-PERL-DEFINES: FORCE - @FLAGS='$(PERL_DEFINES)'; \ - if test x"$$FLAGS" != x"`cat $@ 2>/dev/null`" ; then \ - echo >&2 " * new perl-specific parameters"; \ - echo "$$FLAGS" >$@; \ - fi +$(eval $(call TRACK_template,GIT-PERL-DEFINES,PERL_DEFINES)) # As with NO_PERL=Y we'll still make GIT-PYTHON-DEFINES if "NO_PYTHON" # is defined, for creating the "unimplemented.sh" scripts. @@ -2390,12 +2376,7 @@ $(SCRIPT_PYTHON_GEN): % : %.py GIT-PYTHON-DEFINES mv $@+ $@ endif # NO_PYTHON -GIT-PYTHON-DEFINES: FORCE - @FLAGS='$(PYTHON_DEFINES)'; \ - if test x"$$FLAGS" != x"`cat $@ 2>/dev/null`" ; then \ - echo >&2 " * new python-specific parameters"; \ - echo "$$FLAGS" >$@; \ - fi +$(eval $(call TRACK_template,GIT-PYTHON-DEFINES,PYTHON_DEFINES)) CONFIGURE_RECIPE = sed -e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' \ configure.ac >configure.ac+ && \ @@ -2751,31 +2732,13 @@ cscope: cscope.out ### Detect prefix changes TRACK_PREFIX = $(bindir_SQ):$(gitexecdir_SQ):$(template_dir_SQ):$(prefix_SQ):\ $(localedir_SQ) - -GIT-PREFIX: FORCE - @FLAGS='$(TRACK_PREFIX)'; \ - if test x"$$FLAGS" != x"`cat GIT-PREFIX 2>/dev/null`" ; then \ - echo >&2 " * new prefix flags"; \ - echo "$$FLAGS" >GIT-PREFIX; \ - fi +$(eval $(call TRACK_template,GIT-PREFIX,TRACK_PREFIX)) TRACK_CFLAGS = $(CC):$(subst ','\'',$(ALL_CFLAGS)):$(USE_GETTEXT_SCHEME) - -GIT-CFLAGS: FORCE - @FLAGS='$(TRACK_CFLAGS)'; \ - if test x"$$FLAGS" != x"`cat GIT-CFLAGS 2>/dev/null`" ; then \ - echo >&2 " * new build flags"; \ - echo "$$FLAGS" >GIT-CFLAGS; \ - fi +$(eval $(call TRACK_template,GIT-CFLAGS,TRACK_CFLAGS)) TRACK_LDFLAGS = $(subst ','\'',$(ALL_LDFLAGS)) - -GIT-LDFLAGS: FORCE - @FLAGS='$(TRACK_LDFLAGS)'; \ - if test x"$$FLAGS" != x"`cat GIT-LDFLAGS 2>/dev/null`" ; then \ - echo >&2 " * new link flags"; \ - echo "$$FLAGS" >GIT-LDFLAGS; \ - fi +$(eval $(call TRACK_template,GIT-LDFLAGS,TRACK_LDFLAGS)) # We need to apply sq twice, once to protect from the shell # that runs GIT-BUILD-OPTIONS, and then again to protect it diff --git a/shared.mak b/shared.mak index ef03c2bc094..97c8903f22c 100644 --- a/shared.mak +++ b/shared.mak @@ -29,3 +29,25 @@ shelldquote = '"$(call shdq,$(call shq,$(1)))"' comma = , empty = space = $(empty) $(empty) + +## wspfx: the whitespace prefix padding for $(QUIET...) and similarly +## aligned output. +wspfx = $(space)$(space)$(space) +wspfx_sq = $(call shellquote,$(wspfx)) + +### Templates + +## Template for making a GIT-SOMETHING, which changes if a +## TRACK_SOMETHING variable changes. +define TRACK_template +.PHONY: FORCE +$(1): FORCE + @FLAGS='$$($(2))'; \ + if ! test -f $(1) ; then \ + echo $(wspfx_sq) "$(1) PARAMETERS (new)"; \ + echo "$$$$FLAGS" >$(1); \ + elif test x"$$$$FLAGS" != x"`cat $(1) 2>/dev/null`" ; then \ + echo $(wspfx_sq) "$(1) PARAMETERS (changed)"; \ + echo "$$$$FLAGS" >$(1); \ + fi +endef From patchwork Wed Nov 17 10:20:15 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12624321 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6961CC433EF for ; Wed, 17 Nov 2021 10:21:09 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 5562A61BF8 for ; Wed, 17 Nov 2021 10:21:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236261AbhKQKYG (ORCPT ); Wed, 17 Nov 2021 05:24:06 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56444 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236274AbhKQKXj (ORCPT ); Wed, 17 Nov 2021 05:23:39 -0500 Received: from mail-wm1-x333.google.com (mail-wm1-x333.google.com [IPv6:2a00:1450:4864:20::333]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CF7D1C061570 for ; Wed, 17 Nov 2021 02:20:40 -0800 (PST) Received: by mail-wm1-x333.google.com with SMTP id i12so1674800wmq.4 for ; Wed, 17 Nov 2021 02:20:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=DW8SHdirwmeFUC5CphnF4Vbp6qHRjP+EJD3zdnZDYo4=; b=RoUNHJ7NOVWl/gFdRu8v7/T6CcS07VJKaHz5oihEjy6jGRQ2wB2LOcSjFKviJ7DLfG Crk+rN4T+7DyDqol2vao6PYfTnMOFs+BEbMYu9mZn1vnXxfRgMdRBooYzdIPhfT10/tL +MRJjrpJ7wiZrDiA3nHTPYn30uw19MfyxFCLqGt5rJQFHTTzSiw+lYbYEcHM2F2N9m/g J565ygCcg8Z5oSiDO+FKZaL/eXgBruoBE9GTSYaMy8pcL22+1aUKXRNrvHpj1SzxNurP m90zJMEtIqDYRYNOUpsqU9XqrU8i3Za5sn6dEavPXbMoWq+sqT5p1ljpUWz/ZIFTOKr5 pF4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=DW8SHdirwmeFUC5CphnF4Vbp6qHRjP+EJD3zdnZDYo4=; b=O7PH+r6Cg6E/z4R8bkuJypmx6fG/7LtjRJJQDxju0+g3EL9iQ+hQsC2kD9XYq5wGww mC9qZk+74RbTnbjoiGE0bgS0bax1+uqbFT1yuBAusz+7Rtb3+LBZTY0/w3bt0ActzLOG 3qXWv4FHYGnZlOC2BIPSMJtafCdPiRknckklVvcahM4e/M19DsLhubkFX7zuzbcVSm9q cWtW+fdFjIgc6wgvD475ytdeBqq5J6pq26XMWvtIBuUynIC8Pcc+fbTp6nsJK6gk4ANM 8IDc/k8BhIOY2ShAM7I4zrN0eGoYIB8A6sRaNRkSUWZCuEbOC7GvV8fD1mjDWjPHsgu6 ze8g== X-Gm-Message-State: AOAM533cwMO7/ryMOXz772oIhwa1/uxJC+mGeC12Ni1okRAklhvov7LF e0U8xMhKEwwG9bQlJo2zSqqD2yn1P4Z9aw== X-Google-Smtp-Source: ABdhPJynbMGf0b0744T6dL77hbl9OSsFQ5sgYZ6delh4KjY49JOze9VFKDM7oM7y3sL3epMLHQpEhg== X-Received: by 2002:a05:600c:1d0e:: with SMTP id l14mr75322649wms.64.1637144439139; Wed, 17 Nov 2021 02:20:39 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id n32sm6456256wms.1.2021.11.17.02.20.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Nov 2021 02:20:38 -0800 (PST) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Phillip Wood , Jeff King , Dan Jacques , Eric Wong , Jonathan Nieder , Mike Hommey , =?utf-8?b?xJBvw6BuIFRy4bqnbiBDw7RuZyBEYW5o?= , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= Subject: [PATCH v4 16/23] Makefile: add "$(QUIET)" boilerplate to shared.mak Date: Wed, 17 Nov 2021 11:20:15 +0100 Message-Id: X-Mailer: git-send-email 2.34.0.796.g2c87ed6146a In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org The $(QUIET) variables we define are largely duplicated between our various Makefiles, let's define them in the new "shared.mak" instead. Since we're not using the environment to pass these around we don't need to export the "QUIET_GEN" and "QUIET_BUILT_IN" variables anymore. The "QUIET_GEN" variable is used in "git-gui/Makefile" and "gitweb/Makefile", but they've got their own definition for those. The "QUIET_BUILT_IN" variable is only used in the top-level "Makefile". We still need to export the "V" variable. Signed-off-by: Ævar Arnfjörð Bjarmason --- Documentation/Makefile | 32 ------------------------- Makefile | 33 -------------------------- config.mak.uname | 1 - shared.mak | 53 ++++++++++++++++++++++++++++++++++++++++++ templates/Makefile | 5 ---- 5 files changed, 53 insertions(+), 71 deletions(-) diff --git a/Documentation/Makefile b/Documentation/Makefile index 4a939cc2c25..69a9af35397 100644 --- a/Documentation/Makefile +++ b/Documentation/Makefile @@ -218,38 +218,6 @@ DEFAULT_EDITOR_SQ = $(subst ','\'',$(DEFAULT_EDITOR)) ASCIIDOC_EXTRA += -a 'git-default-editor=$(DEFAULT_EDITOR_SQ)' endif -QUIET_SUBDIR0 = +$(MAKE) -C # space to separate -C and subdir -QUIET_SUBDIR1 = - -ifneq ($(findstring $(MAKEFLAGS),w),w) -PRINT_DIR = --no-print-directory -else # "make -w" -NO_SUBDIR = : -endif - -ifneq ($(findstring $(MAKEFLAGS),s),s) -ifndef V - QUIET = @ - QUIET_ASCIIDOC = @echo ' ' ASCIIDOC $@; - QUIET_XMLTO = @echo ' ' XMLTO $@; - QUIET_DB2TEXI = @echo ' ' DB2TEXI $@; - QUIET_MAKEINFO = @echo ' ' MAKEINFO $@; - QUIET_DBLATEX = @echo ' ' DBLATEX $@; - QUIET_XSLTPROC = @echo ' ' XSLTPROC $@; - QUIET_GEN = @echo ' ' GEN $@; - QUIET_STDERR = 2> /dev/null - QUIET_SUBDIR0 = +@subdir= - QUIET_SUBDIR1 = ;$(NO_SUBDIR) echo ' ' SUBDIR $$subdir; \ - $(MAKE) $(PRINT_DIR) -C $$subdir - - QUIET_LINT_GITLINK = @echo ' ' LINT GITLINK $<; - QUIET_LINT_MANSEC = @echo ' ' LINT MAN SEC $<; - QUIET_LINT_MANEND = @echo ' ' LINT MAN END $<; - - export V -endif -endif - all: html man html: $(DOC_HTML) diff --git a/Makefile b/Makefile index c8a0a1586ca..c437aea9e4a 100644 --- a/Makefile +++ b/Makefile @@ -1939,39 +1939,6 @@ ifndef PAGER_ENV PAGER_ENV = LESS=FRX LV=-c endif -QUIET_SUBDIR0 = +$(MAKE) -C # space to separate -C and subdir -QUIET_SUBDIR1 = - -ifneq ($(findstring w,$(MAKEFLAGS)),w) -PRINT_DIR = --no-print-directory -else # "make -w" -NO_SUBDIR = : -endif - -ifneq ($(findstring s,$(MAKEFLAGS)),s) -ifndef V - QUIET_CC = @echo ' ' CC $@; - QUIET_AR = @echo ' ' AR $@; - QUIET_LINK = @echo ' ' LINK $@; - QUIET_BUILT_IN = @echo ' ' BUILTIN $@; - QUIET_GEN = @echo ' ' GEN $@; - QUIET_LNCP = @echo ' ' LN/CP $@; - QUIET_XGETTEXT = @echo ' ' XGETTEXT $@; - QUIET_MSGFMT = @echo ' ' MSGFMT $@; - QUIET_GCOV = @echo ' ' GCOV $@; - QUIET_SP = @echo ' ' SP $<; - QUIET_HDR = @echo ' ' HDR $(<:hcc=h); - QUIET_RC = @echo ' ' RC $@; - QUIET_SPATCH = @echo ' ' SPATCH $<; - QUIET_SUBDIR0 = +@subdir= - QUIET_SUBDIR1 = ;$(NO_SUBDIR) echo ' ' SUBDIR $$subdir; \ - $(MAKE) $(PRINT_DIR) -C $$subdir - export V - export QUIET_GEN - export QUIET_BUILT_IN -endif -endif - ifdef NO_INSTALL_HARDLINKS export NO_INSTALL_HARDLINKS endif diff --git a/config.mak.uname b/config.mak.uname index d0701f9beb0..1a12d8c635f 100644 --- a/config.mak.uname +++ b/config.mak.uname @@ -715,7 +715,6 @@ vcxproj: git diff-index --cached --quiet HEAD -- # Make .vcxproj files and add them - unset QUIET_GEN QUIET_BUILT_IN; \ perl contrib/buildsystems/generate -g Vcxproj git add -f git.sln {*,*/lib,t/helper/*}/*.vcxproj diff --git a/shared.mak b/shared.mak index 97c8903f22c..1b666a1bc69 100644 --- a/shared.mak +++ b/shared.mak @@ -35,6 +35,59 @@ space = $(empty) $(empty) wspfx = $(space)$(space)$(space) wspfx_sq = $(call shellquote,$(wspfx)) +### Quieting +## common +QUIET_SUBDIR0 = +$(MAKE) -C # space to separate -C and subdir +QUIET_SUBDIR1 = + +ifneq ($(findstring w,$(MAKEFLAGS)),w) +PRINT_DIR = --no-print-directory +else # "make -w" +NO_SUBDIR = : +endif + +ifneq ($(findstring s,$(MAKEFLAGS)),s) +ifndef V +## common + QUIET_SUBDIR0 = +@subdir= + QUIET_SUBDIR1 = ;$(NO_SUBDIR) echo ' ' SUBDIR $$subdir; \ + $(MAKE) $(PRINT_DIR) -C $$subdir + + QUIET = @ + QUIET_GEN = @echo ' ' GEN $@; + +## Used in "Makefile" + QUIET_CC = @echo ' ' CC $@; + QUIET_AR = @echo ' ' AR $@; + QUIET_LINK = @echo ' ' LINK $@; + QUIET_BUILT_IN = @echo ' ' BUILTIN $@; + QUIET_LNCP = @echo ' ' LN/CP $@; + QUIET_XGETTEXT = @echo ' ' XGETTEXT $@; + QUIET_MSGFMT = @echo ' ' MSGFMT $@; + QUIET_GCOV = @echo ' ' GCOV $@; + QUIET_SP = @echo ' ' SP $<; + QUIET_HDR = @echo ' ' HDR $(<:hcc=h); + QUIET_RC = @echo ' ' RC $@; + QUIET_SPATCH = @echo ' ' SPATCH $<; + +## Used in "Documentation/Makefile" + QUIET_ASCIIDOC = @echo ' ' ASCIIDOC $@; + QUIET_XMLTO = @echo ' ' XMLTO $@; + QUIET_DB2TEXI = @echo ' ' DB2TEXI $@; + QUIET_MAKEINFO = @echo ' ' MAKEINFO $@; + QUIET_DBLATEX = @echo ' ' DBLATEX $@; + QUIET_XSLTPROC = @echo ' ' XSLTPROC $@; + QUIET_GEN = @echo ' ' GEN $@; + QUIET_STDERR = 2> /dev/null + + QUIET_LINT_GITLINK = @echo ' ' LINT GITLINK $<; + QUIET_LINT_MANSEC = @echo ' ' LINT MAN SEC $<; + QUIET_LINT_MANEND = @echo ' ' LINT MAN END $<; + + export V +endif +endif + ### Templates ## Template for making a GIT-SOMETHING, which changes if a diff --git a/templates/Makefile b/templates/Makefile index c9251a96622..b056e710b7e 100644 --- a/templates/Makefile +++ b/templates/Makefile @@ -2,11 +2,6 @@ include ../shared.mak # make and install sample templates - -ifndef V - QUIET = @ -endif - INSTALL ?= install TAR ?= tar RM ?= rm -f From patchwork Wed Nov 17 10:20:16 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12624323 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5592BC43217 for ; Wed, 17 Nov 2021 10:21:10 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 4024961BAA for ; Wed, 17 Nov 2021 10:21:10 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236219AbhKQKYH (ORCPT ); Wed, 17 Nov 2021 05:24:07 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56474 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236288AbhKQKXk (ORCPT ); Wed, 17 Nov 2021 05:23:40 -0500 Received: from mail-wm1-x331.google.com (mail-wm1-x331.google.com [IPv6:2a00:1450:4864:20::331]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9F2B0C061746 for ; Wed, 17 Nov 2021 02:20:41 -0800 (PST) Received: by mail-wm1-x331.google.com with SMTP id r9-20020a7bc089000000b00332f4abf43fso3474749wmh.0 for ; Wed, 17 Nov 2021 02:20:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=gTuGh0OsKlUWxcaeeKNzPegVUrAJ5g41+M7bgxrbGKA=; b=n6fvs+Qlt3ByTRTVlgKl0U5tGCsbKmGJ37bTqncjSzQJMuOnrX3tvFmlwo4YT0tt9T FqMuLfnTZNWC307c3ea6nNIiT97xwu7YL4SLxd2LOgArBWJ2U/xyqRcKG1cVNsczPXg+ +xVZtVwVTT+ZEleQEVxpqOK32YeKbnJ1YL/40FWNKhgg5/ykWpfwwjHBrNyD8RMfZhpA kPVYIZClSsvKR2PIpGBifg8O6m6E2wpS9mRvg5G8bg87fJEAIViJJ2PQk18OXbO/zmXH EiBRvhxB8qwJtH4de8EOMCGOjUuyww+jbEWazrTxUyPvxoWhItMa72B3kQcudulSGmng uA5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=gTuGh0OsKlUWxcaeeKNzPegVUrAJ5g41+M7bgxrbGKA=; b=rTjOi5gZFRIddiXNm1UWAeLgn4zeUGewBcUwZO+oplCTZkR14mab22E8Rqfa4yITYy W5oFbL7d96Sqkkb0JJgDptnCBT7Go2f26mO6OrOtGG08ptzSfsyYoEB5mgF3sDi0IYLI zrQ4wmWbjNl8brbEAKs8mvIvnUkpzjJ2VgNgHCLS0CkARyAJ3lgyhH9yA4TDyAGCT41+ XnXDGXKlPn2cyq2FJgTjoRor8oeESmJH3IA4A6snKUt4n6WQU29kajNDnHtOm4zVefQO b+Q7ZG9u5lFjvXA3/IgUxAs0LV4ofcDsCZbFkKcnux3tuatexHjKhDmyCgdFpalIRrut uczQ== X-Gm-Message-State: AOAM53062ckjLQlHsxFNvT15fGJ+PJV+b3BQubT6v7uny/KNjdf0IVLF taJT1FYvXXsMdSgD2kPYv1jSIDJoljTLnw== X-Google-Smtp-Source: ABdhPJzAOswjxCEM7OiL/SiiLjaaAlI/4t1dy8ziouAURYD9mCu/pbfQ0uBlUOSwkkmAUxEwIH3NbQ== X-Received: by 2002:a05:600c:1987:: with SMTP id t7mr16281666wmq.24.1637144440029; Wed, 17 Nov 2021 02:20:40 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id n32sm6456256wms.1.2021.11.17.02.20.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Nov 2021 02:20:39 -0800 (PST) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Phillip Wood , Jeff King , Dan Jacques , Eric Wong , Jonathan Nieder , Mike Hommey , =?utf-8?b?xJBvw6BuIFRy4bqnbiBDw7RuZyBEYW5o?= , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= Subject: [PATCH v4 17/23] Makefile: use $(wspfx) for $(QUIET...) in shared.mak Date: Wed, 17 Nov 2021 11:20:16 +0100 Message-Id: X-Mailer: git-send-email 2.34.0.796.g2c87ed6146a In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Change the mostly move-only change in the preceding commit to use the $(wspfx) variable for defining the QUIET padding, to guarantee that it's consistent with the "TRACK_template" template. $ make CFLAGS=-I$RANDOM grep.o wspfx='$(space)->' -> GIT-CFLAGS PARAMETERS (changed) -> CC grep.o Signed-off-by: Ævar Arnfjörð Bjarmason --- shared.mak | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/shared.mak b/shared.mak index 1b666a1bc69..36f00e88bb8 100644 --- a/shared.mak +++ b/shared.mak @@ -50,39 +50,39 @@ ifneq ($(findstring s,$(MAKEFLAGS)),s) ifndef V ## common QUIET_SUBDIR0 = +@subdir= - QUIET_SUBDIR1 = ;$(NO_SUBDIR) echo ' ' SUBDIR $$subdir; \ + QUIET_SUBDIR1 = ;$(NO_SUBDIR) echo $(wspfx_sq) SUBDIR $$subdir; \ $(MAKE) $(PRINT_DIR) -C $$subdir QUIET = @ - QUIET_GEN = @echo ' ' GEN $@; + QUIET_GEN = @echo $(wspfx_sq) GEN $@; ## Used in "Makefile" - QUIET_CC = @echo ' ' CC $@; - QUIET_AR = @echo ' ' AR $@; - QUIET_LINK = @echo ' ' LINK $@; - QUIET_BUILT_IN = @echo ' ' BUILTIN $@; - QUIET_LNCP = @echo ' ' LN/CP $@; - QUIET_XGETTEXT = @echo ' ' XGETTEXT $@; - QUIET_MSGFMT = @echo ' ' MSGFMT $@; - QUIET_GCOV = @echo ' ' GCOV $@; - QUIET_SP = @echo ' ' SP $<; - QUIET_HDR = @echo ' ' HDR $(<:hcc=h); - QUIET_RC = @echo ' ' RC $@; - QUIET_SPATCH = @echo ' ' SPATCH $<; + QUIET_CC = @echo $(wspfx_sq) CC $@; + QUIET_AR = @echo $(wspfx_sq) AR $@; + QUIET_LINK = @echo $(wspfx_sq) LINK $@; + QUIET_BUILT_IN = @echo $(wspfx_sq) BUILTIN $@; + QUIET_LNCP = @echo $(wspfx_sq) LN/CP $@; + QUIET_XGETTEXT = @echo $(wspfx_sq) XGETTEXT $@; + QUIET_MSGFMT = @echo $(wspfx_sq) MSGFMT $@; + QUIET_GCOV = @echo $(wspfx_sq) GCOV $@; + QUIET_SP = @echo $(wspfx_sq) SP $<; + QUIET_HDR = @echo $(wspfx_sq) HDR $(<:hcc=h); + QUIET_RC = @echo $(wspfx_sq) RC $@; + QUIET_SPATCH = @echo $(wspfx_sq) SPATCH $<; ## Used in "Documentation/Makefile" - QUIET_ASCIIDOC = @echo ' ' ASCIIDOC $@; - QUIET_XMLTO = @echo ' ' XMLTO $@; - QUIET_DB2TEXI = @echo ' ' DB2TEXI $@; - QUIET_MAKEINFO = @echo ' ' MAKEINFO $@; - QUIET_DBLATEX = @echo ' ' DBLATEX $@; - QUIET_XSLTPROC = @echo ' ' XSLTPROC $@; - QUIET_GEN = @echo ' ' GEN $@; + QUIET_ASCIIDOC = @echo $(wspfx_sq) ASCIIDOC $@; + QUIET_XMLTO = @echo $(wspfx_sq) XMLTO $@; + QUIET_DB2TEXI = @echo $(wspfx_sq) DB2TEXI $@; + QUIET_MAKEINFO = @echo $(wspfx_sq) MAKEINFO $@; + QUIET_DBLATEX = @echo $(wspfx_sq) DBLATEX $@; + QUIET_XSLTPROC = @echo $(wspfx_sq) XSLTPROC $@; + QUIET_GEN = @echo $(wspfx_sq) GEN $@; QUIET_STDERR = 2> /dev/null - QUIET_LINT_GITLINK = @echo ' ' LINT GITLINK $<; - QUIET_LINT_MANSEC = @echo ' ' LINT MAN SEC $<; - QUIET_LINT_MANEND = @echo ' ' LINT MAN END $<; + QUIET_LINT_GITLINK = @echo $(wspfx_sq) LINT GITLINK $<; + QUIET_LINT_MANSEC = @echo $(wspfx_sq) LINT MAN SEC $<; + QUIET_LINT_MANEND = @echo $(wspfx_sq) LINT MAN END $<; export V endif From patchwork Wed Nov 17 10:20:17 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12624327 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6F1B2C433F5 for ; Wed, 17 Nov 2021 10:21:11 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 55F8161BF9 for ; Wed, 17 Nov 2021 10:21:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236256AbhKQKYI (ORCPT ); Wed, 17 Nov 2021 05:24:08 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56512 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236265AbhKQKXl (ORCPT ); Wed, 17 Nov 2021 05:23:41 -0500 Received: from mail-wm1-x331.google.com (mail-wm1-x331.google.com [IPv6:2a00:1450:4864:20::331]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E19A8C061204 for ; Wed, 17 Nov 2021 02:20:42 -0800 (PST) Received: by mail-wm1-x331.google.com with SMTP id p3-20020a05600c1d8300b003334fab53afso4322602wms.3 for ; Wed, 17 Nov 2021 02:20:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=i17kNRFT2P/RSbdz+G5LrCD2E0MXRbAX9bdTm5/88QM=; b=lEzRXIuALFPn6duhhoBat2gHcrUq76vSQ69LqjEQ2HBXSjdcm/e/l2pN2Lwmhe58wb yCPb6dtIUWHTToZzrAHep9hW0hLGWz5/vA2/FHT6A/C+yFtGDVqwcKR/V8UUburfzFHM GrSgUVA4PDES3jB2I21cyVc1c6F66bB4pJAvp9eAH12M0j95Ebw0a26AOwmH97AFSZap m0UHNHu2sABaQb52NsWSgwv/fQEric3otF9UZ2uUTdjtEx7GM0kIH17x5cZecSJrXpAn fUvtnSbcupaLzzci1sr8g1HFo7zAGMQMxizegVDaW4CmM+wpT+G5Xoz/u+31/YNn8JwX yAbA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=i17kNRFT2P/RSbdz+G5LrCD2E0MXRbAX9bdTm5/88QM=; b=e5hZ8LA4wP4/0bkTfVGxZWxSkqM44lN+g+ho3PrEi4gIqHYLCAha93vHNn2jheVxhX +BpdFf/V7Abl6kYFG77GT8R9/UBKlb5SXjBugwjM2wgv8JLnN+v+yZRi9PUvVdsSX8ux VwmHHYJ8Z3wLWHmxj3iEP8JY6hxTJDzO9zKGmAYjISaOR0mnlG32SN5LT2PYQ/zBl7k2 SjX9lSZi6HuPc1FJTdQJOJaKd86Qn5Z7D9beqU3J0fJhbcujtQYVRmcfZTviB7B8cjNh YXChjxulQfm/qn0NCL3ZWBLigxFS8IEGIp6G26WDFPQBF9pxPXe2Zrp8n90/KI5O3gtZ 2Slw== X-Gm-Message-State: AOAM533K0KKWXbNYVha2pSDGe9vCVYEgYbHiovDTkgwOXxnju0Ir86eQ aT5qjUdDTB7sJPL/mRy4dGEGvfcaL75maA== X-Google-Smtp-Source: ABdhPJx9gAkLhrOqgOL+IxdCvclAoedXM2gAB+TuJFNYGAkNZHP8yrykWtK8uKFn8po1tRwkvSiBGw== X-Received: by 2002:a05:600c:21c3:: with SMTP id x3mr16170493wmj.13.1637144440982; Wed, 17 Nov 2021 02:20:40 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id n32sm6456256wms.1.2021.11.17.02.20.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Nov 2021 02:20:40 -0800 (PST) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Phillip Wood , Jeff King , Dan Jacques , Eric Wong , Jonathan Nieder , Mike Hommey , =?utf-8?b?xJBvw6BuIFRy4bqnbiBDw7RuZyBEYW5o?= , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= Subject: [PATCH v4 18/23] Makefiles: add and use wildcard "mkdir -p" template Date: Wed, 17 Nov 2021 11:20:17 +0100 Message-Id: X-Mailer: git-send-email 2.34.0.796.g2c87ed6146a In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Add a template to do the "mkdir -p" of $(@D) (the parent dir of $@) for us, and use it for the "make lint-docs" targets I added in 8650c6298c1 (doc lint: make "lint-docs" non-.PHONY, 2021-10-15). As seen in 4c64fb5aad9 (Documentation/Makefile: fix lint-docs mkdir dependency, 2021-10-26) maintaining these manual lists of parent directory dependencies is fragile, in addition to being obviously verbose. I used this pattern at the time because I couldn't find another method than "order-only" prerequisites to avoid doing a "mkdir -p $(@D)" for every file being created, which as noted in [1] would be significantly slower. But as it turns out we can use this neat trick of only doing a "mkdir -p" if the $(wildcard) macro tells us the path doesn't exist. A re-run of a performance test similar to thatnoted downthread of [1] in [2] shows that this is faster, in addition to being less verbose and more reliable (this uses my "git-hyperfine" thin wrapper for "hyperfine"[3]): $ git hyperfine -L rev HEAD~0,HEAD~1 -b 'make -C Documentation lint-docs' -p 'rm -rf Documentation/.build' 'make -C Documentation lint-docs' Benchmark 1: make -C Documentation lint-docs' in 'HEAD~0 Time (mean ± σ): 2.129 s ± 0.011 s [User: 1.840 s, System: 0.321 s] Range (min … max): 2.121 s … 2.158 s 10 runs Benchmark 2: make -C Documentation lint-docs' in 'HEAD~1 Time (mean ± σ): 2.659 s ± 0.002 s [User: 2.306 s, System: 0.397 s] Range (min … max): 2.657 s … 2.662 s 10 runs Summary 'make -C Documentation lint-docs' in 'HEAD~0' ran 1.25 ± 0.01 times faster than 'make -C Documentation lint-docs' in 'HEAD~1' So let's use that pattern both for the "lint-docs" target, and a few miscellaneous other targets. This method of creating parent directories is explicitly racy in that we don't know if we're going to say always create a "foo" followed by a "foo/bar" under parallelism, or skip the "foo" because we created "foo/bar" first. In this case it doesn't matter for anything except that we aren't guaranteed to get the same number of rules firing when running make in parallel. 1. https://lore.kernel.org/git/211028.861r45y3pt.gmgdl@evledraar.gmail.com/ 2. https://lore.kernel.org/git/211028.86o879vvtp.gmgdl@evledraar.gmail.com/ 3. https://gitlab.com/avar/git-hyperfine/ Signed-off-by: Ævar Arnfjörð Bjarmason --- Documentation/Makefile | 25 +++---------------------- Makefile | 12 +++++++----- shared.mak | 7 +++++++ 3 files changed, 17 insertions(+), 27 deletions(-) diff --git a/Documentation/Makefile b/Documentation/Makefile index 69a9af35397..d16b653394c 100644 --- a/Documentation/Makefile +++ b/Documentation/Makefile @@ -428,25 +428,11 @@ quick-install-html: require-htmlrepo print-man1: @for i in $(MAN1_TXT); do echo $$i; done -## Lint: Common -.build: - $(QUIET)mkdir $@ -.build/lint-docs: | .build - $(QUIET)mkdir $@ - ## Lint: gitlink -.build/lint-docs/gitlink: | .build/lint-docs - $(QUIET)mkdir $@ -.build/lint-docs/gitlink/howto: | .build/lint-docs/gitlink - $(QUIET)mkdir $@ -.build/lint-docs/gitlink/config: | .build/lint-docs/gitlink - $(QUIET)mkdir $@ LINT_DOCS_GITLINK = $(patsubst %.txt,.build/lint-docs/gitlink/%.ok,$(HOWTO_TXT) $(DOC_DEP_TXT)) -$(LINT_DOCS_GITLINK): | .build/lint-docs/gitlink -$(LINT_DOCS_GITLINK): | .build/lint-docs/gitlink/howto -$(LINT_DOCS_GITLINK): | .build/lint-docs/gitlink/config $(LINT_DOCS_GITLINK): lint-gitlink.perl $(LINT_DOCS_GITLINK): .build/lint-docs/gitlink/%.ok: %.txt + $(call mkdir_p_parent_template) $(QUIET_LINT_GITLINK)$(PERL_PATH) lint-gitlink.perl \ $< \ $(HOWTO_TXT) $(DOC_DEP_TXT) \ @@ -457,23 +443,18 @@ $(LINT_DOCS_GITLINK): .build/lint-docs/gitlink/%.ok: %.txt lint-docs-gitlink: $(LINT_DOCS_GITLINK) ## Lint: man-end-blurb -.build/lint-docs/man-end-blurb: | .build/lint-docs - $(QUIET)mkdir $@ LINT_DOCS_MAN_END_BLURB = $(patsubst %.txt,.build/lint-docs/man-end-blurb/%.ok,$(MAN_TXT)) -$(LINT_DOCS_MAN_END_BLURB): | .build/lint-docs/man-end-blurb $(LINT_DOCS_MAN_END_BLURB): lint-man-end-blurb.perl $(LINT_DOCS_MAN_END_BLURB): .build/lint-docs/man-end-blurb/%.ok: %.txt + $(call mkdir_p_parent_template) $(QUIET_LINT_MANEND)$(PERL_PATH) lint-man-end-blurb.perl $< >$@ .PHONY: lint-docs-man-end-blurb -lint-docs-man-end-blurb: $(LINT_DOCS_MAN_END_BLURB) ## Lint: man-section-order -.build/lint-docs/man-section-order: | .build/lint-docs - $(QUIET)mkdir $@ LINT_DOCS_MAN_SECTION_ORDER = $(patsubst %.txt,.build/lint-docs/man-section-order/%.ok,$(MAN_TXT)) -$(LINT_DOCS_MAN_SECTION_ORDER): | .build/lint-docs/man-section-order $(LINT_DOCS_MAN_SECTION_ORDER): lint-man-section-order.perl $(LINT_DOCS_MAN_SECTION_ORDER): .build/lint-docs/man-section-order/%.ok: %.txt + $(call mkdir_p_parent_template) $(QUIET_LINT_MANSEC)$(PERL_PATH) lint-man-section-order.perl $< >$@ .PHONY: lint-docs-man-section-order lint-docs-man-section-order: $(LINT_DOCS_MAN_SECTION_ORDER) diff --git a/Makefile b/Makefile index c437aea9e4a..0a3f292bf82 100644 --- a/Makefile +++ b/Makefile @@ -2632,7 +2632,8 @@ all:: $(MOFILES) endif po/build/locale/%/LC_MESSAGES/git.mo: po/%.po - $(QUIET_MSGFMT)mkdir -p $(dir $@) && $(MSGFMT) -o $@ $< + $(call mkdir_p_parent_template) + $(QUIET_MSGFMT)$(MSGFMT) -o $@ $< ifndef NO_PERL LIB_PERL = $(wildcard perl/Git.pm perl/Git/*.pm perl/Git/*/*.pm perl/Git/*/*/*.pm) @@ -2641,7 +2642,8 @@ LIB_CPAN = $(wildcard perl/FromCPAN/*.pm perl/FromCPAN/*/*.pm) LIB_CPAN_GEN = $(patsubst perl/%.pm,perl/build/lib/%.pm,$(LIB_CPAN)) perl/build/lib/%.pm: perl/%.pm GIT-PERL-DEFINES - $(QUIET_GEN)mkdir -p $(dir $@) && \ + $(call mkdir_p_parent_template) + $(QUIET_GEN) \ sed -e 's|@@LOCALEDIR@@|$(perl_localedir_SQ)|g' \ -e 's|@@NO_GETTEXT@@|$(NO_GETTEXT_SQ)|g' \ -e 's|@@NO_PERL_CPAN_FALLBACKS@@|$(call shq,$(NO_PERL_CPAN_FALLBACKS))|g' \ @@ -2655,8 +2657,8 @@ endif # install-man depends on Git.3pm even with NO_PERL=Y perl/build/man/man3/Git.3pm: perl/Git.pm - $(QUIET_GEN)mkdir -p $(dir $@) && \ - pod2man $< $@ + $(call mkdir_p_parent_template) + $(QUIET_GEN)pod2man $< $@ FIND_SOURCE_FILES = ( \ git ls-files \ @@ -2780,7 +2782,7 @@ test_bindir_programs := $(patsubst %,bin-wrappers/%,$(BINDIR_PROGRAMS_NEED_X) $( all:: $(TEST_PROGRAMS) $(test_bindir_programs) bin-wrappers/%: wrap-for-bin.sh - @mkdir -p bin-wrappers + $(call mkdir_p_parent_template) $(QUIET_GEN)sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \ -e 's|@@BUILD_DIR@@|$(shell pwd)|' \ -e 's|@@PROG@@|$(patsubst test-%,t/helper/test-%$(X),$(@F))$(patsubst git%,$(X),$(filter $(@F),$(BINDIR_PROGRAMS_NEED_X)))|' < $< > $@ && \ diff --git a/shared.mak b/shared.mak index 36f00e88bb8..8d3023c2782 100644 --- a/shared.mak +++ b/shared.mak @@ -56,6 +56,8 @@ ifndef V QUIET = @ QUIET_GEN = @echo $(wspfx_sq) GEN $@; + QUIET_MKDIR_P_PARENT = @echo $(wspfx_sq) MKDIR -p $(@D); + ## Used in "Makefile" QUIET_CC = @echo $(wspfx_sq) CC $@; QUIET_AR = @echo $(wspfx_sq) AR $@; @@ -88,6 +90,11 @@ ifndef V endif endif +## Helpers +define mkdir_p_parent_template +$(if $(wildcard $(@D)),,$(QUIET_MKDIR_P_PARENT)$(shell mkdir -p $(@D))) +endef + ### Templates ## Template for making a GIT-SOMETHING, which changes if a From patchwork Wed Nov 17 10:20:18 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12624329 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4661AC433EF for ; Wed, 17 Nov 2021 10:21:14 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 2BBE861BF8 for ; Wed, 17 Nov 2021 10:21:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236352AbhKQKYK (ORCPT ); Wed, 17 Nov 2021 05:24:10 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56520 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236242AbhKQKXm (ORCPT ); Wed, 17 Nov 2021 05:23:42 -0500 Received: from mail-wm1-x333.google.com (mail-wm1-x333.google.com [IPv6:2a00:1450:4864:20::333]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 91C07C061208 for ; Wed, 17 Nov 2021 02:20:43 -0800 (PST) Received: by mail-wm1-x333.google.com with SMTP id 133so1722585wme.0 for ; Wed, 17 Nov 2021 02:20:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=5t8LCQhZGGsnbE0uIsoVupFqG8QfInC6IhXzkOL4jts=; b=EQUc0tvG5yDoPJR45uppV9iSgDsHmqFw/if8pCkXv6QiNBfynoyS0p1odnzh2IAnQ5 pq8IKI9C3Q3NDpwTlLHP8GwXTQsrA1LOBpHxchpivxFurmUOjKxMDVOpGLACXhh3v9uK J7++Ut3EsvlNgSVic9Ui6ZdRo78J4QTVY0xUKGmEwym01zAb8pUo/8gKK6lb8JgdXTc3 EbQCsfahUuy+VwWWXcLJl7gWts2Pr7GMJwQZA1wNqPlkqmF1/SiHcJj1PGPgYj+1f5wn s3/lfR5awXNXD4tg92AZ2lBsCDZUPJC20jQlr4iSGzVwkoSyDu4/Ke7qvrAyWynPTdvu 6h4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=5t8LCQhZGGsnbE0uIsoVupFqG8QfInC6IhXzkOL4jts=; b=lGZdrA0ph/YoRZIqIlOjSpYa57yuu2IY0CeMKHkCIyszWaA9r2v+t5DdqyM4JCX/7R DRPXyxmf0dXWxF7G9oKEvrYD5PSlCt6WK4dvJl5T5UnY9ITzXi+ImK6s0/D127Iuff19 gNMINxkQDcN2kugDUIRpGkpRrwA1VkPjzSm90+xbsPHeSdV+TUB5e6pz76jLr5uRWk3m ++4fwnEJ6o1MTowcmWTNwM5+luG+Z9ToEWwVLIpjqzuidK+844HIpAs8ZCTEzyUmDLGA UwIRXsC7Ypo7AcpF/dkzinPiiLWN7CvvnRM2L/P81Mc89qfZiOhCf7cJ6aZrf9SVC/x9 995A== X-Gm-Message-State: AOAM530i1laRn/70/K9lw4mqwAjE4QBjCCHix9HYxy71/5XrmQK70R75 YsUCHJiRFN5i7b0XMXC7sE1GXKPZKprumg== X-Google-Smtp-Source: ABdhPJwXK4QCmXwxJOdG9zL960Nngzsx6FubzmQSV7DnzXxYjCL5Aia2rpCQaWCRAhv0YOThwNr0IQ== X-Received: by 2002:a1c:23cb:: with SMTP id j194mr78946990wmj.13.1637144441900; Wed, 17 Nov 2021 02:20:41 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id n32sm6456256wms.1.2021.11.17.02.20.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Nov 2021 02:20:41 -0800 (PST) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Phillip Wood , Jeff King , Dan Jacques , Eric Wong , Jonathan Nieder , Mike Hommey , =?utf-8?b?xJBvw6BuIFRy4bqnbiBDw7RuZyBEYW5o?= , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= Subject: [PATCH v4 19/23] Makefile: correct the dependency graph of hook-list.h Date: Wed, 17 Nov 2021 11:20:18 +0100 Message-Id: X-Mailer: git-send-email 2.34.0.796.g2c87ed6146a In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Fix an issue in my cfe853e66be (hook-list.h: add a generated list of hooks, like config-list.h, 2021-09-26), the builtin/help.c was inadvertently made to depend on hook-list.h, but it's used by builtin/bugreport.c. The hook.c also does not depend on hook-list.h. It did in an earlier version of the greater series cfe853e66be was extracted from, but not anymore. We might end up needing that line again, but let's remove it for now. Reported-by: Mike Hommey Signed-off-by: Ævar Arnfjörð Bjarmason --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 0a3f292bf82..a9fa9461613 100644 --- a/Makefile +++ b/Makefile @@ -2161,9 +2161,9 @@ git$X: git.o GIT-LDFLAGS $(BUILTIN_OBJS) $(GITLIBS) $(filter %.o,$^) $(LIBS) help.sp help.s help.o: command-list.h -hook.sp hook.s hook.o: hook-list.h +builtin/bugreport.sp builtin/bugreport.s builtin/bugreport.o: hook-list.h -builtin/help.sp builtin/help.s builtin/help.o: config-list.h hook-list.h GIT-PREFIX +builtin/help.sp builtin/help.s builtin/help.o: config-list.h GIT-PREFIX builtin/help.sp builtin/help.s builtin/help.o: EXTRA_CPPFLAGS = \ '-DGIT_HTML_PATH="$(htmldir_relative_SQ)"' \ '-DGIT_MAN_PATH="$(mandir_relative_SQ)"' \ From patchwork Wed Nov 17 10:20:19 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12624331 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 76010C433F5 for ; Wed, 17 Nov 2021 10:21:17 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 5C62E61BAA for ; Wed, 17 Nov 2021 10:21:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236399AbhKQKYM (ORCPT ); Wed, 17 Nov 2021 05:24:12 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56532 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236300AbhKQKXp (ORCPT ); Wed, 17 Nov 2021 05:23:45 -0500 Received: from mail-wm1-x333.google.com (mail-wm1-x333.google.com [IPv6:2a00:1450:4864:20::333]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7C03BC06120F for ; Wed, 17 Nov 2021 02:20:44 -0800 (PST) Received: by mail-wm1-x333.google.com with SMTP id b184-20020a1c1bc1000000b0033140bf8dd5so1649108wmb.5 for ; Wed, 17 Nov 2021 02:20:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=dziMm9DZNZAQoE9JczvCy7APwqsZflQK+6M+LBQ3huk=; b=D4QGNcs+KxW2HPKG4TZ7oNJ6PkWREX3QcKIKF3LyDd7v9FLfeFMXjR0g83/kNqRGLy vHO4x34WaEnPSqB5A9M5phussb5pE5iPmdqIlDtEZXYt/B4GEsIRy7MWUc8n3UNjNniQ 2TkV0q7VV6ORRBIedZl4yXuGPHsPCEFTCVI2jIO3VuUamjzxjlIl9e5ZKIxNYhplE8t0 Glee/CIXaPjWJfmVL6DlVuIHiSMddLCtM1M8Aymih82M3IcBhnuoZkZ7ZEbDEOiHQM3W AjbyT3xSuEGl+9tK2c6jjDT5fAGVTCARA5fnqZo0MnXfGHGP/aabyhNxr7yYz27qM36z SjfQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=dziMm9DZNZAQoE9JczvCy7APwqsZflQK+6M+LBQ3huk=; b=2yGS07E/4Ik8xOdazi0Ue83azLZbQlVK592KIKCycS5O2DVpRs7ACTbQHHRjfPRSdd k9OzdrEbl5zz4LUZjbpkUQPoXWWEnEh6NQOaFej1k1FXroiXGOE43H2ABhldZSlWHZX7 5jCUBA6DAH5aYZwRAU8Aw2McMCERHpcBHJHfm0SHy/XldGwcCAdtHTLQekiQj2q6Zr48 R3fvCn39te+ZhSx5GsFIDsIG6VFO/wDDx4XYXwSs7tvvtyxxs7ub2W8LQFvb4pFznLEo 3D6sAgWi0dLA9HK8KRk9VBDe3CBbmM2X4oGCc2k4cUr6Ui8QXUuedzIt9D9IhT2V56tU Bl1w== X-Gm-Message-State: AOAM5330Wv8zF6qQYgkf39fki13reWwZc+PXM1Hh2qOC4tAXX3GD39Cq 9aZFBNEEZ3ygbFbMWnOCwap+Pq0JpE9Xyw== X-Google-Smtp-Source: ABdhPJzVmIzKnZ6CZ320yzKKsV7dhOoq55yfObj9Sc1f9vbYANnblxuxqijMe6Igsa7b0RCKR0oe9A== X-Received: by 2002:a1c:4681:: with SMTP id t123mr77350947wma.83.1637144442797; Wed, 17 Nov 2021 02:20:42 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id n32sm6456256wms.1.2021.11.17.02.20.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Nov 2021 02:20:42 -0800 (PST) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Phillip Wood , Jeff King , Dan Jacques , Eric Wong , Jonathan Nieder , Mike Hommey , =?utf-8?b?xJBvw6BuIFRy4bqnbiBDw7RuZyBEYW5o?= , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= Subject: [PATCH v4 20/23] Makefile: use $(file) I/O instead of "FORCE" when possible Date: Wed, 17 Nov 2021 11:20:19 +0100 Message-Id: X-Mailer: git-send-email 2.34.0.796.g2c87ed6146a In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Provide an alternate implementation of the recently added "TRACK_template" which uses GNU make 4.2 features. If the 'file' function is available we don't need to shell out at all to check if our tracked files change. We need to use the intermediate TRACK_template calling a TRACK_template_eval within the generated rule so that we don't eagerly fleshen these when "make" reads the file. This doesn't make the runtime faster on my system, but helps to cut down on the noise of things we shell out for unconditionally. I.e. running "make" with "SHELL_PATH='sh -x'" (twice, so we pick up the setting) shows than a no-op run went from emitting: $ SHELL_PATH='sh -x' make -j8 >/dev/null 2>&1; SHELL_PATH='sh -x' make 2>&1 |wc -l 124 To: $ SHELL_PATH='sh -x' make -j8 >/dev/null 2>&1; SHELL_PATH='sh -x' make 2>&1 |wc -l 95 That 124 to 95 number is a rough approximation of how many times we shell out. "strace -f -c" similarly shows that we went from 8798 to 8466 syscalls. So this brings us further along in the goal of making "make" do as little as possible when it's got nothing to re-build (see [2]). 1. https://lore.kernel.org/git/874kdn1j6i.fsf@evledraar.gmail.com/ Signed-off-by: Ævar Arnfjörð Bjarmason --- shared.mak | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/shared.mak b/shared.mak index 8d3023c2782..2d5d5b2fb9b 100644 --- a/shared.mak +++ b/shared.mak @@ -8,6 +8,22 @@ # info make --index-search=.DELETE_ON_ERROR .DELETE_ON_ERROR: +### GNU Make version detection +# We don't care about "release" versions like the "90" in "3.99.90" +MAKE_VERSION_MAJOR = $(word 1,$(subst ., ,$(MAKE_VERSION))) +MAKE_VERSION_MINOR = $(word 2,$(subst ., ,$(MAKE_VERSION))) + +# The oldest supported version of GNU make is 3-something. So "not v3" +# is a future-proof way to ask "is it modern?" +ifneq ($(MAKE_VERSION_MAJOR),3) +# $(file >[...]) and $(file >>[...]) is in 4.0... +MAKE_HAVE_FILE_WRITE = Need version 4.0 or later (released in late 2013) +# .. but we need 4.2 for $(file <[...]) +ifneq ($(filter-out 0 1,$(MAKE_VERSION_MINOR)),) +MAKE_HAVE_FILE_READ = Need version 4.2 or later (released in mid-2016) +endif +endif + ### Quoting helpers ## Quote a ' inside a '': FOO='$(call shq,$(BAR))' @@ -99,6 +115,10 @@ endef ## Template for making a GIT-SOMETHING, which changes if a ## TRACK_SOMETHING variable changes. +## +## This is the slower version used on GNU make <4.2. +ifndef MAKE_HAVE_FILE_READ + define TRACK_template .PHONY: FORCE $(1): FORCE @@ -111,3 +131,41 @@ $(1): FORCE echo "$$$$FLAGS" >$(1); \ fi endef + +endif # !MAKE_HAVE_FILE_READ + +## A TRACK_template template compatible with the one above. Uses +## features of GNU make >=4.2 to avoid shelling out for this "hot" +## "FORCE" logic. +## +## Since version >=4.2 can do both "I" and "O" in I/O with using +## $(file <)/$(file >) we read the GIT-SOMETHING file into a variable +## with the former, and if it's different from our expected value +## write it out with the latter. +ifdef MAKE_HAVE_FILE_READ + +define TRACK_template_eval +$(1)_WRITE = +$(1)_EXISTS = $(wildcard $(1)) +ifeq ($$($(1)_EXISTS),) +$(1)_WRITE = new +else +$(1)_CONTENT = $(file <$(1)) +ifeq ($$($(1)_CONTENT),$($(2))) +$(1)_WRITE = same +else +$(1)_WRITE = changed +endif +endif +ifneq ($$($(1)_WRITE),same) +$$(info $$(wspfx) $(1) parameters ($$($(1)_WRITE))) +$$(file >$(1),$($(2))) +endif +endef # TRACK_template_eval + +define TRACK_template +$(1): + $$(eval $$(call TRACK_template_eval,$(1),$(2))) +endef + +endif # MAKE_HAVE_FILE_READ From patchwork Wed Nov 17 10:20:20 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12624333 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 383AAC433F5 for ; Wed, 17 Nov 2021 10:21:19 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 1A57B61BF8 for ; Wed, 17 Nov 2021 10:21:19 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236357AbhKQKYP (ORCPT ); Wed, 17 Nov 2021 05:24:15 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56458 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236255AbhKQKYA (ORCPT ); Wed, 17 Nov 2021 05:24:00 -0500 Received: from mail-wr1-x42b.google.com (mail-wr1-x42b.google.com [IPv6:2a00:1450:4864:20::42b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 584B1C061226 for ; Wed, 17 Nov 2021 02:20:45 -0800 (PST) Received: by mail-wr1-x42b.google.com with SMTP id b12so3619204wrh.4 for ; Wed, 17 Nov 2021 02:20:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=tBMr7lF+aQNpijO7CJ3wvJ2+X7KORrBeU/AVksdOFSI=; b=OUCQKn8g07D8kiv30nYqSCbvfUtHcpjvY9cVs8aQquxuNadmiWAOx7m0toTfn5PSTu qMM9W6win0fNr8pnV0ImghkZWJsQeD2qPld89FVqP6gqqcLirS/POMWh0iMYjsTUzxbj suWDtPa4eh1T0RxEa9rMieL2zdx4eEuagoqOQygkyqtM2EVuofJQDzICMNqR1r13T36a 8ki+wYZwu1J4IBX3uBcEUHLorqbk4HysXTVypXh6qr6JAGTDg4JheuZSCTp90ugdwNOM EQBLRP235AueNkInot6Myi7kBaJleEbalEADlGovX11CR58IDXXo/mOwNU4EIo1zfDix qx+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=tBMr7lF+aQNpijO7CJ3wvJ2+X7KORrBeU/AVksdOFSI=; b=loLWapAjC4S9+PfkzN+kWmW8URRPJrXg9Bx/6p9KbIJqIP1uKaAWqyat9g/zoe+xTl OA+ntCh0XimnD9GP5BZNErGhSmjBBYtrQWkCxknwonEJfv+aUsx4iFmhk2X4vl1g3nU/ qN+gocsxcAVpUE0jKQ2lRKXnUnQbxBQNWcumHeED0tIhjZWxBjdyYD1Thh3IXm+jfNLC a5vIqCKtGC/XOWQ1O6CMXGBPzorwvC/XtWWZ94QWui4375UBMF5av/NqJ/0ri2v+rcu0 aWTnzCJBbe+HeS6JJ3FEzdV3zE8M70LNk126XTAEJrpDttNo3a+IN44JUgLeLn6U/7Wd Rh3A== X-Gm-Message-State: AOAM533ERxteAsYe5x6bPgBeXUhr+HLTtmC+vRntZ/gbcX6tGcVHGi7s wamQxWEZMx8779//8dSfQudC8y+mmxXqqg== X-Google-Smtp-Source: ABdhPJzXvVTAsvdWKLw8x/NZPUmG3pGXBbbUVVexKCme44RQWVTJ1ChmtGrKpc4QxeOu1fXBi8M9iw== X-Received: by 2002:a5d:630b:: with SMTP id i11mr18467589wru.316.1637144443647; Wed, 17 Nov 2021 02:20:43 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id n32sm6456256wms.1.2021.11.17.02.20.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Nov 2021 02:20:43 -0800 (PST) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Phillip Wood , Jeff King , Dan Jacques , Eric Wong , Jonathan Nieder , Mike Hommey , =?utf-8?b?xJBvw6BuIFRy4bqnbiBDw7RuZyBEYW5o?= , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= Subject: [PATCH v4 21/23] Makefile: disable GNU make built-in wildcard rules Date: Wed, 17 Nov 2021 11:20:20 +0100 Message-Id: X-Mailer: git-send-email 2.34.0.796.g2c87ed6146a In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Override built-in rules of GNU make that use a wildcard target. This speeds things up significantly as we don't need to stat() so many files just in case we'd be able to retrieve their contents from RCS or SCCS. See [1] for an old mailing list discussion about how to disable these. This gives us a noticeable speedup on a no-op run: $ git hyperfine -L rev HEAD~1,HEAD~0 -s 'make -j8 all NO_TCLTK=Y' 'make NO_TCLTK=Y' --warmup 10 -M 10 Benchmark 1: make NO_TCLTK=Y' in 'HEAD~1 Time (mean ± σ): 182.2 ms ± 4.1 ms [User: 146.8 ms, System: 49.5 ms] Range (min … max): 179.6 ms … 193.4 ms 10 runs Benchmark 2: make NO_TCLTK=Y' in 'HEAD~0 Time (mean ± σ): 167.9 ms ± 1.3 ms [User: 127.8 ms, System: 55.6 ms] Range (min … max): 166.1 ms … 170.4 ms 10 runs Summary 'make NO_TCLTK=Y' in 'HEAD~0' ran 1.09 ± 0.03 times faster than 'make NO_TCLTK=Y' in 'HEAD~1' Running the same except with 'strace -c -S calls make' as the benchmark command shows (under --show-output) that we went from ~7716 syscalls to ~7519, mostly a reduction in [l]stat(). We could also invoke make with "-r" by setting "MAKEFLAGS = -r" early, adding a "-r" variant to the above benchmark shows that it may be 1.01 or so faster (but in my tests, always with a much bigger error bar). But doing so is a much bigger hammer, since it will disable all built-in rules, some (all?) of which can be seen with: make -f/dev/null -p | grep -v -e ^# -e ^$ We may have something that relies on them, so let's go for the more isolated optimization here that gives us most or all of the wins. 1. https://lists.gnu.org/archive/html/help-make/2002-11/msg00063.html Signed-off-by: Ævar Arnfjörð Bjarmason --- shared.mak | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/shared.mak b/shared.mak index 2d5d5b2fb9b..20109e6a90e 100644 --- a/shared.mak +++ b/shared.mak @@ -1,3 +1,14 @@ +### Remove GNU make implicit rules + +## This speeds things up since we don't need to look for and stat() a +## "foo.c,v" every time a rule referring to "foo.c" is in play. See +## "make -p -f/dev/null | grep ^%::'". +%:: %,v +%:: RCS/%,v +%:: RCS/% +%:: s.% +%:: SCCS/s.% + ### Flags affecting all rules # A GNU make extension since gmake 3.72 (released in late 1994) to From patchwork Wed Nov 17 10:20:21 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12624335 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0D708C433F5 for ; Wed, 17 Nov 2021 10:21:23 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D6F1A61BAA for ; Wed, 17 Nov 2021 10:21:22 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236360AbhKQKYT (ORCPT ); Wed, 17 Nov 2021 05:24:19 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56484 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236287AbhKQKYB (ORCPT ); Wed, 17 Nov 2021 05:24:01 -0500 Received: from mail-wr1-x430.google.com (mail-wr1-x430.google.com [IPv6:2a00:1450:4864:20::430]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 346AAC061228 for ; Wed, 17 Nov 2021 02:20:46 -0800 (PST) Received: by mail-wr1-x430.google.com with SMTP id b12so3619267wrh.4 for ; Wed, 17 Nov 2021 02:20:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=5MW0Witr/fs4Xmm7zb6ZAP4kfuLQfPUw7K9QtXn0uJA=; b=kL7Kyd/xBp9GTpZcBQqCA2ygbw6+s7y/I2lYL9dVCEAqlMFnwMUPySzGjVgA/8sJ38 /QcJkF7fW3HIyIWwzqXcKKUSES1esb92TdfoWtGsqIllRi4coMaRrrTeNuZC0WGDhjNR CTlI7oamJe6d0/0SpB7n5QMgW1VAW3m4wap7oO0rKbr9mmoYZogpYWZDXYq/uC/nTQuG kWj3hoyArj9wcwm8DAgLsTJsF9BO9W6dpFTS3pclPh0gft0CIRKwK0Lvs+rQ8luIZ9Ml kvuq0arsM98PtKhvtPbaRv2VC/N2at3wx0K/iZLuWMrgwx2sPy1jLZ0loMOvFasHzqLe Uq3Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=5MW0Witr/fs4Xmm7zb6ZAP4kfuLQfPUw7K9QtXn0uJA=; b=IQ8nqqp6Lag4OB1mnfNUIEMwWgSgYgrh+5ICUWgeJJ5N0HrBFjapHe00F2+tWk738k UTRFHUdnDW7OOv4NvBUeWPiaw27h0NdZRg8eBYZLCtJnSo82HZlxTuSHv/MYOZx/z9jP gltREgwnnv4VEWYPdePyw+t8XYgEUDdqVtQ8FtwwajRj7MaZa2p4Dw1rR8RFVOSBWlo7 LS4Y7hfmDbPLIUaxpiByTZwbm2Fk4kchHpFeGTpMnWQqg9B0Wb5aWJiLYnttE52NG3IT TK0mzzvyTdfbEWdjr2oFh34mhROMqWVRKEz6BuNNdM07EZPIqDMwmm10zBxUhXdZC8BG M+OQ== X-Gm-Message-State: AOAM532hDP4U26q3sUQKqFVBpJXs7CkWcPupKm2JYdKE/WIO/b3o1r9z U5f3BXxdydEr8q57qg8bdLGbx887c/SMhw== X-Google-Smtp-Source: ABdhPJx9Ce18Vq6TMWiXXTS33+6FSYvmXHOx/48uEvnXZImCWhDuWgZOeebJgSRezSKG7dLe+dGUww== X-Received: by 2002:a5d:65c7:: with SMTP id e7mr18448286wrw.319.1637144444568; Wed, 17 Nov 2021 02:20:44 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id n32sm6456256wms.1.2021.11.17.02.20.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Nov 2021 02:20:43 -0800 (PST) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Phillip Wood , Jeff King , Dan Jacques , Eric Wong , Jonathan Nieder , Mike Hommey , =?utf-8?b?xJBvw6BuIFRy4bqnbiBDw7RuZyBEYW5o?= , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= Subject: [PATCH v4 22/23] Makefile: define $(LIB_H) in terms of $(FIND_SOURCE_FILES) Date: Wed, 17 Nov 2021 11:20:21 +0100 Message-Id: X-Mailer: git-send-email 2.34.0.796.g2c87ed6146a In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Combine the definitions of $(FIND_SOURCE_FILES) and $(LIB_H) to speed up the Makefile, as these are the two main expensive $(shell) commands that we execute unconditionally. When see what was in $(FOUND_SOURCE_FILES) that wasn't in $(LIB_H) via the ad-hoc test of: $(error $(filter-out $(LIB_H),$(filter %.h,$(ALL_SOURCE_FILES)))) $(error $(filter-out $(ALL_SOURCE_FILES),$(filter %.h,$(LIB_H)))) We'll get, respectively: Makefile:850: *** t/helper/test-tool.h. Stop. Makefile:850: *** . Stop. I.e. we only had a discrepancy when it came to t/helper/test-tool.h. In terms of correctness this was broken before, but now works: $ make t/helper/test-tool.hco HDR t/helper/test-tool.h This speeds things up a lot: $ git -c hyperfine.hook.setup= hyperfine -L rev HEAD~1,HEAD~0 -s 'make -j8 all NO_TCLTK=Y' 'make NO_TCLTK=Y' --war mup 10 -M 10 Benchmark 1: make NO_TCLTK=Y' in 'HEAD~1 Time (mean ± σ): 99.5 ms ± 0.5 ms [User: 83.4 ms, System: 20.7 ms] Range (min … max): 98.8 ms … 100.2 ms 10 runs Benchmark 2: make NO_TCLTK=Y' in 'HEAD~0 Time (mean ± σ): 69.4 ms ± 0.5 ms [User: 58.8 ms, System: 14.2 ms] Range (min … max): 68.9 ms … 70.3 ms 10 runs Summary 'make NO_TCLTK=Y' in 'HEAD~0' ran 1.43 ± 0.01 times faster than 'make NO_TCLTK=Y' in 'HEAD~1' Signed-off-by: Ævar Arnfjörð Bjarmason --- Makefile | 54 ++++++++++++++++++++++++++---------------------------- 1 file changed, 26 insertions(+), 28 deletions(-) diff --git a/Makefile b/Makefile index a9fa9461613..eb1c944787b 100644 --- a/Makefile +++ b/Makefile @@ -821,12 +821,33 @@ GENERATED_H += hook-list.h .PHONY: generated-hdrs generated-hdrs: $(GENERATED_H) -LIB_H := $(sort $(patsubst ./%,%,$(shell git ls-files '*.h' ':!t/' ':!Documentation/' 2>/dev/null || \ +## Exhaustive lists of our source files, either dynamically generated, +## or hardcoded. +SOURCES_CMD = ( \ + git ls-files \ + '*.[hcS]' \ + '*.sh' \ + ':!*[tp][0-9][0-9][0-9][0-9]*' \ + ':!contrib' \ + 2>/dev/null || \ $(FIND) . \ - -name .git -prune -o \ - -name t -prune -o \ - -name Documentation -prune -o \ - -name '*.h' -print))) + \( -name .git -type d -prune \) \ + -o \( -name '[tp][0-9][0-9][0-9][0-9]*' -prune \) \ + -o \( -name contrib -type d -prune \) \ + -o \( -name build -type d -prune \) \ + -o \( -name 'trash*' -type d -prune \) \ + -o \( -name '*.[hcS]' -type f -print \) \ + -o \( -name '*.sh' -type f -print \) \ + | sed -e 's|^\./||' \ + ) +FOUND_SOURCE_FILES := $(shell $(SOURCES_CMD)) + +FOUND_C_SOURCES = $(filter %.c,$(FOUND_SOURCE_FILES)) +FOUND_H_SOURCES = $(filter %.h,$(FOUND_SOURCE_FILES)) + +COCCI_SOURCES = $(filter-out $(THIRD_PARTY_SOURCES),$(FOUND_C_SOURCES)) + +LIB_H = $(FOUND_H_SOURCES) LIB_OBJS += abspath.o LIB_OBJS += add-interactive.o @@ -2660,26 +2681,6 @@ perl/build/man/man3/Git.3pm: perl/Git.pm $(call mkdir_p_parent_template) $(QUIET_GEN)pod2man $< $@ -FIND_SOURCE_FILES = ( \ - git ls-files \ - '*.[hcS]' \ - '*.sh' \ - ':!*[tp][0-9][0-9][0-9][0-9]*' \ - ':!contrib' \ - 2>/dev/null || \ - $(FIND) . \ - \( -name .git -type d -prune \) \ - -o \( -name '[tp][0-9][0-9][0-9][0-9]*' -prune \) \ - -o \( -name contrib -type d -prune \) \ - -o \( -name build -type d -prune \) \ - -o \( -name 'trash*' -type d -prune \) \ - -o \( -name '*.[hcS]' -type f -print \) \ - -o \( -name '*.sh' -type f -print \) \ - | sed -e 's|^\./||' \ - ) - -FOUND_SOURCE_FILES = $(shell $(FIND_SOURCE_FILES)) - $(ETAGS_TARGET): $(FOUND_SOURCE_FILES) $(QUIET_GEN)$(RM) $@+ && \ echo $(FOUND_SOURCE_FILES) | xargs etags -a -o $@+ && \ @@ -2859,9 +2860,6 @@ check: $(GENERATED_H) exit 1; \ fi -FOUND_C_SOURCES = $(filter %.c,$(FOUND_SOURCE_FILES)) -COCCI_SOURCES = $(filter-out $(THIRD_PARTY_SOURCES),$(FOUND_C_SOURCES)) - %.cocci.patch: %.cocci $(COCCI_SOURCES) $(QUIET_SPATCH) \ if test $(SPATCH_BATCH_SIZE) = 0; then \ From patchwork Wed Nov 17 10:20:22 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12624337 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 241BEC433EF for ; Wed, 17 Nov 2021 10:21:24 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 09A6461BFA for ; Wed, 17 Nov 2021 10:21:24 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236259AbhKQKYV (ORCPT ); Wed, 17 Nov 2021 05:24:21 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56528 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236338AbhKQKYC (ORCPT ); Wed, 17 Nov 2021 05:24:02 -0500 Received: from mail-wm1-x332.google.com (mail-wm1-x332.google.com [IPv6:2a00:1450:4864:20::332]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E7F8FC06122C for ; Wed, 17 Nov 2021 02:20:46 -0800 (PST) Received: by mail-wm1-x332.google.com with SMTP id z1-20020a05600c220100b00337f97d2464so3442973wml.1 for ; Wed, 17 Nov 2021 02:20:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=xUmrL/XG2zpOGV/60h5A9iyGb3Qfq9Nntx7WFjZL6WE=; b=TFpn8VFKaSrkb9IrIM+9ZA/SKL6VtTSLEQdBue/7SrwRQlNgrsLVq2IgTWyJvLMDVj BqcqJ00QO/y3g0h7I6F0l9BSleH0S8zXEFBOqEidlGL/sRS4MScJoE1g71XIdugT/Fqv 8F4xg4o6mEcVkVcl9FfoQibug9nJz0D+IDxSnViFiPJU6+05TK9wePq4U2mp2LXB+yNB Uz1VKFrqLTyGyYjieT5UMjjFZhydAvNeQJEDgraskUbqE3D9KroIgpNniVm6bqD+3t4B I1fspYZA8t8j6ZCkNq3QlkZrMck4AYiaaZ0ThYdfvA7OjIA4y7iPPk3/ScYi2vWd0kCX BhCg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=xUmrL/XG2zpOGV/60h5A9iyGb3Qfq9Nntx7WFjZL6WE=; b=mqtUBiKcyY9DS9RtOCCtyIRfpSYpcRM/1/KElHl9ikodQzB4Mbm1hm6nNq58zL1Hk3 aVka7y59toKgU+Kwn1jlr145U8GmyIEY/VRGy4o1J84RNItvtsenmRyXXO7G4TPgiJdL pTMwS6JraoCJZNA2Sn0pcfwMxyUhb8ZEteeW0GKGXTj5SXs72DvUwBcWC9S/NvpitKrI N+9xlWqjFH0lm5GlOw9ou2nyU9pWx24CCmrBMR1CnS6myregJSJHQow2u2xqOtXr4U00 Vh2AuZN9nJfjMiWfMWCpmvEed40qp/2Y/1I8OEgyYYIwLCMb3HomCkbp4n0LSOHVenhx wTmw== X-Gm-Message-State: AOAM531LRhpoJDlGDfZbntWXqm/KVMYXGfaDlX00lEz+30SI7lu8rIv2 3lAVk2/Qix+cAGkjdi+0V88r+/fCBbWTzQ== X-Google-Smtp-Source: ABdhPJy2U9LnQ/q+Df3tBZbDsAXfjHZYiwLDf3SVZR0bL0dexKdVRr5WnQdcpi+pcTWIYSL5Wg4RXA== X-Received: by 2002:a1c:a715:: with SMTP id q21mr79666787wme.23.1637144445316; Wed, 17 Nov 2021 02:20:45 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id n32sm6456256wms.1.2021.11.17.02.20.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Nov 2021 02:20:44 -0800 (PST) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Phillip Wood , Jeff King , Dan Jacques , Eric Wong , Jonathan Nieder , Mike Hommey , =?utf-8?b?xJBvw6BuIFRy4bqnbiBDw7RuZyBEYW5o?= , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= Subject: [PATCH v4 23/23] Makefile: move ".SUFFIXES" rule to shared.mak Date: Wed, 17 Nov 2021 11:20:22 +0100 Message-Id: X-Mailer: git-send-email 2.34.0.796.g2c87ed6146a In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org This was added in 30248886ce8 (Makefile: disable default implicit rules, 2010-01-26), let's move it to the top of "shared.mak" so it'll apply to all our Makefiles. This doesn't benefit the main Makefile at all, since it already had the rule, but since we're including shared.mak in other Makefiles starts to benefit them. E.g. running the 'man" target is now ~1.3x faster: $ git -c hyperfine.hook.setup= hyperfine -L rev HEAD~1,HEAD~0 -s 'make -j8 -C Documentation man' 'make -C Documentation man' --warmup 10 -M 10 Benchmark 1: make -C Documentation man' in 'HEAD~1 Time (mean ± σ): 87.2 ms ± 1.0 ms [User: 79.3 ms, System: 10.8 ms] Range (min … max): 86.3 ms … 89.7 ms 10 runs Benchmark 2: make -C Documentation man' in 'HEAD~0 Time (mean ± σ): 64.5 ms ± 0.6 ms [User: 54.5 ms, System: 13.0 ms] Range (min … max): 63.8 ms … 65.7 ms 10 runs Summary 'make -C Documentation man' in 'HEAD~0' ran 1.35 ± 0.02 times faster than 'make -C Documentation man' in 'HEAD~1' Signed-off-by: Ævar Arnfjörð Bjarmason --- Makefile | 2 -- shared.mak | 5 +++++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index eb1c944787b..035573c8997 100644 --- a/Makefile +++ b/Makefile @@ -2459,8 +2459,6 @@ ASM_SRC := $(wildcard $(OBJECTS:o=S)) ASM_OBJ := $(ASM_SRC:S=o) C_OBJ := $(filter-out $(ASM_OBJ),$(OBJECTS)) -.SUFFIXES: - $(C_OBJ): %.o: %.c GIT-CFLAGS $(missing_dep_dirs) $(missing_compdb_dir) $(QUIET_CC)$(CC) -o $*.o -c $(dep_args) $(compdb_args) $(ALL_CFLAGS) $(EXTRA_CPPFLAGS) $< $(ASM_OBJ): %.o: %.S GIT-CFLAGS $(missing_dep_dirs) $(missing_compdb_dir) diff --git a/shared.mak b/shared.mak index 20109e6a90e..d8453bb471f 100644 --- a/shared.mak +++ b/shared.mak @@ -9,6 +9,11 @@ %:: s.% %:: SCCS/s.% +## Likewise delete default $(SUFFIXES). See: +## +## info make --index-search=.DELETE_ON_ERROR +.SUFFIXES: + ### Flags affecting all rules # A GNU make extension since gmake 3.72 (released in late 1994) to