From patchwork Fri Nov 2 22:37:39 2018 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: 10666267 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 431BF17D5 for ; Fri, 2 Nov 2018 22:38:02 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 33FEC2C43D for ; Fri, 2 Nov 2018 22:38:02 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 280842C4F1; Fri, 2 Nov 2018 22:38:02 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 86D042C43D for ; Fri, 2 Nov 2018 22:38:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728364AbeKCHq5 (ORCPT ); Sat, 3 Nov 2018 03:46:57 -0400 Received: from mail-wr1-f66.google.com ([209.85.221.66]:36163 "EHLO mail-wr1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728318AbeKCHq5 (ORCPT ); Sat, 3 Nov 2018 03:46:57 -0400 Received: by mail-wr1-f66.google.com with SMTP id z13-v6so1066944wrs.3 for ; Fri, 02 Nov 2018 15:37:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=zHj5VizSg9THNiGlpS3vTyJpAYrkVmSmFOyLy0fyiCc=; b=ul6OHjLupabLkNb7rsmB/hoB2+8G0HvZPpi6MDumLEDYRlT1jJB3Nj753CBDiABDW0 w9rXSPNJ6vg5qjif9gHD92WgH7hyqD0c4m9qI/0Ady4XJ073Z4vpcUo91NXqurRcZitr t0MyEHk7neH8FgurfmUaQZyGb21lPYM/Xa2dRT3d+Q5hMookNe8C5KwONNGmwaRtngtd hMBmwUKXAUM2P4Yjv3pbYBrfST0XawIt2N4v/wrAI18zZoPYz7f0gIEGoiQIuJEOKyi2 w/MAPWPgCd8f3aeGX/iuM2FSK5knfn1u1adMXonE4aoTw16hokuUMDC3t4JxxubllSkK yAsg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=zHj5VizSg9THNiGlpS3vTyJpAYrkVmSmFOyLy0fyiCc=; b=WqidJ91n9J6IOc769fOP9yKBf0/wIP92VJ6p/3rQP4KgcvcN0m9xEpJDBZ6YF9Zi3l 8Sdd1eS6cwNJABEvCHbDhsuKmvnJ+oQrwmJc4pJaDxQCMlgpGfTAZXXt0iP1fzSlpI48 ovTNyt/m2iFNRFSkCwWPYtutoFQoSk0BRiPHbwV7qxfJo8UGm3sdCmUnzEa/Hy1qCkte oIjxktx0KVV4eAzk3tFxVGswxdnltUVVfolSksmSE2M20aNuJ1WyBMv3x0Vb4hNiEJl4 mCoLxdEPnN0aYRHZu+oBtbr1QDDx5dxPOGDY/CURhgDXfoS4LcxYjznKU6/GDvhNFdID 0YBA== X-Gm-Message-State: AGRZ1gIibPuptEhhwTqhqS+c8lFcdr4YSqu1mhJEgchZpXyuJjJEpfTP e8aV5ju5QbCSd468vMDERXOWWGw/ X-Google-Smtp-Source: AJdET5dfflYXX+EU3LqFugCTa/Xh658kZyvFYFcOp9nlzV4CXokNvCmRP96zJLgPhW8SddHSyxjJlA== X-Received: by 2002:adf:cf02:: with SMTP id o2-v6mr12443897wrj.258.1541198275036; Fri, 02 Nov 2018 15:37:55 -0700 (PDT) Received: from u.nix.is ([2a01:4f8:190:5095::2]) by smtp.gmail.com with ESMTPSA id a12-v6sm21461469wrr.71.2018.11.02.15.37.53 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 02 Nov 2018 15:37:54 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Daniel Jacques , Johannes Schindelin , Steffen Prohaska , John Keeping , Stan Hu , Richard Clamp , Jeff King , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= Subject: [RFC/PATCH 1/5] Makefile: move long inline shell loops in "install" into helper Date: Fri, 2 Nov 2018 22:37:39 +0000 Message-Id: <20181102223743.4331-2-avarab@gmail.com> X-Mailer: git-send-email 2.19.1.930.g4563a0d9d0 In-Reply-To: <87efkkdwcv.fsf@evledraar.gmail.com> References: <87efkkdwcv.fsf@evledraar.gmail.com> MIME-Version: 1.0 Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Move a 37 line for-loop mess out of "install" and into a helper script. This started out fairly innocent but over the years has grown into a hard-to-maintain monster, and my recent ad874608d8 ("Makefile: optionally symlink libexec/git-core binaries to bin/git", 2018-03-13) certainly didn't help. The shell code is ported pretty much as-is (with getopts added), it'll be fixed & prettified in subsequent commits. Signed-off-by: Ævar Arnfjörð Bjarmason --- Makefile | 52 ++++++++-------------------- install_programs | 89 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 103 insertions(+), 38 deletions(-) create mode 100755 install_programs diff --git a/Makefile b/Makefile index bbfbb4292d..aa6ca1fa68 100644 --- a/Makefile +++ b/Makefile @@ -2808,44 +2808,20 @@ endif bindir=$$(cd '$(DESTDIR_SQ)$(bindir_SQ)' && pwd) && \ execdir=$$(cd '$(DESTDIR_SQ)$(gitexec_instdir_SQ)' && pwd) && \ destdir_from_execdir_SQ=$$(echo '$(gitexecdir_relative_SQ)' | sed -e 's|[^/][^/]*|..|g') && \ - { test "$$bindir/" = "$$execdir/" || \ - for p in git$X $(filter $(install_bindir_programs),$(ALL_PROGRAMS)); do \ - $(RM) "$$execdir/$$p" && \ - test -n "$(INSTALL_SYMLINKS)" && \ - ln -s "$$destdir_from_execdir_SQ/$(bindir_relative_SQ)/$$p" "$$execdir/$$p" || \ - { test -z "$(NO_INSTALL_HARDLINKS)$(NO_CROSS_DIRECTORY_HARDLINKS)" && \ - ln "$$bindir/$$p" "$$execdir/$$p" 2>/dev/null || \ - cp "$$bindir/$$p" "$$execdir/$$p" || exit; } \ - done; \ - } && \ - for p in $(filter $(install_bindir_programs),$(BUILT_INS)); do \ - $(RM) "$$bindir/$$p" && \ - test -n "$(INSTALL_SYMLINKS)" && \ - ln -s "git$X" "$$bindir/$$p" || \ - { test -z "$(NO_INSTALL_HARDLINKS)" && \ - ln "$$bindir/git$X" "$$bindir/$$p" 2>/dev/null || \ - ln -s "git$X" "$$bindir/$$p" 2>/dev/null || \ - cp "$$bindir/git$X" "$$bindir/$$p" || exit; } \ - done && \ - for p in $(BUILT_INS); do \ - $(RM) "$$execdir/$$p" && \ - test -n "$(INSTALL_SYMLINKS)" && \ - ln -s "$$destdir_from_execdir_SQ/$(bindir_relative_SQ)/git$X" "$$execdir/$$p" || \ - { test -z "$(NO_INSTALL_HARDLINKS)" && \ - ln "$$execdir/git$X" "$$execdir/$$p" 2>/dev/null || \ - ln -s "git$X" "$$execdir/$$p" 2>/dev/null || \ - cp "$$execdir/git$X" "$$execdir/$$p" || exit; } \ - done && \ - remote_curl_aliases="$(REMOTE_CURL_ALIASES)" && \ - for p in $$remote_curl_aliases; do \ - $(RM) "$$execdir/$$p" && \ - test -n "$(INSTALL_SYMLINKS)" && \ - ln -s "git-remote-http$X" "$$execdir/$$p" || \ - { test -z "$(NO_INSTALL_HARDLINKS)" && \ - ln "$$execdir/git-remote-http$X" "$$execdir/$$p" 2>/dev/null || \ - ln -s "git-remote-http$X" "$$execdir/$$p" 2>/dev/null || \ - cp "$$execdir/git-remote-http$X" "$$execdir/$$p" || exit; } \ - done && \ + ./install_programs \ + --X="$$X" \ + --RM="$(RM)" \ + --bindir="$$bindir" \ + --bindir-relative="$(bindir_relative_SQ)" \ + --execdir="$$execdir" \ + --destdir-from-execdir="$$destdir_from_execdir_SQ" \ + --flag-install-symlinks="$(INSTALL_SYMLINKS)" \ + --flag-no-install-hardlinks="$(NO_INSTALL_HARDLINKS)" \ + --flag-no-cross-directory-hardlinks="$(NO_CROSS_DIRECTORY_HARDLINKS)" \ + --list-bindir-standalone="git$X $(filter $(install_bindir_programs),$(ALL_PROGRAMS))" \ + --list-bindir-git-dashed="$(filter $(install_bindir_programs),$(BUILT_INS))" \ + --list-execdir-git-dashed="$(BUILT_INS)" \ + --list-execdir-curl-aliases="$(REMOTE_CURL_ALIASES)" && \ ./check_bindir "z$$bindir" "z$$execdir" "$$bindir/git-add$X" .PHONY: install-gitweb install-doc install-man install-man-perl install-html install-info install-pdf diff --git a/install_programs b/install_programs new file mode 100755 index 0000000000..e287108112 --- /dev/null +++ b/install_programs @@ -0,0 +1,89 @@ +#!/bin/sh + +while test $# != 0 +do + case "$1" in + --X=*) + X="${1#--X=}" + ;; + --RM=*) + RM="${1#--RM=}" + ;; + --bindir=*) + bindir="${1#--bindir=}" + ;; + --bindir-relative=*) + bindir_relative="${1#--bindir-relative=}" + ;; + --execdir=*) + execdir="${1#--execdir=}" + ;; + --destdir-from-execdir=*) + destdir_from_execdir="${1#--destdir-from-execdir=}" + ;; + --flag-install-symlinks=*) + INSTALL_SYMLINKS="${1#--flag-install-symlinks=}" + ;; + --flag-no-install-hardlinks=*) + NO_INSTALL_HARDLINKS="${1#--flag-no-install-hardlinks=}" + ;; + --flag-no-cross-directory-hardlinks=*) + NO_CROSS_DIRECTORY_HARDLINKS="${1#--flag-no-cross-directory-hardlinks=}" + ;; + --list-bindir-standalone=*) + list_bindir_standalone="${1#--list-bindir-standalone=}" + ;; + --list-bindir-git-dashed=*) + list_bindir_git_dashed="${1#--list-bindir-git-dashed=}" + ;; + --list-execdir-git-dashed=*) + list_execdir_git_dashed="${1#--list-execdir-git-dashed=}" + ;; + --list-execdir-curl-aliases=*) + list_execdir_curl_aliases="${1#--list-execdir-curl-aliases=}" + ;; + + *) + echo "Unknown option $1" + exit 1 + ;; + esac + shift +done && +{ test "$bindir/" = "$execdir/" || + for p in $list_bindir_standalone; do + $RM "$execdir/$p" && + test -n "$INSTALL_SYMLINKS" && + ln -s "$destdir_from_execdir/$bindir_relative/$p" "$execdir/$p" || + { test -z "$NO_INSTALL_HARDLINKS$NO_CROSS_DIRECTORY_HARDLINKS" && + ln "$bindir/$p" "$execdir/$p" 2>/dev/null || + cp "$bindir/$p" "$execdir/$p" || exit; } + done; +} && +for p in $list_bindir_git_dashed; do + $RM "$bindir/$p" && + test -n "$INSTALL_SYMLINKS" && + ln -s "git$X" "$bindir/$p" || + { test -z "$NO_INSTALL_HARDLINKS" && + ln "$bindir/git$X" "$bindir/$p" 2>/dev/null || + ln -s "git$X" "$bindir/$p" 2>/dev/null || + cp "$bindir/git$X" "$bindir/$p" || exit; } +done && +for p in $list_execdir_git_dashed; do + $RM "$execdir/$p" && + test -n "$INSTALL_SYMLINKS" && + ln -s "$destdir_from_execdir/$bindir_relative/git$X" "$execdir/$p" || + { test -z "$NO_INSTALL_HARDLINKS" && + ln "$execdir/git$X" "$execdir/$p" 2>/dev/null || + ln -s "git$X" "$execdir/$p" 2>/dev/null || + cp "$execdir/git$X" "$execdir/$p" || exit; } +done && +for p in $list_execdir_curl_aliases; do + $RM "$execdir/$p" && + test -n "$INSTALL_SYMLINKS" && + ln -s "git-remote-http$X" "$execdir/$p" || + { test -z "$NO_INSTALL_HARDLINKS" && + ln "$execdir/git-remote-http$X" "$execdir/$p" 2>/dev/null || + ln -s "git-remote-http$X" "$execdir/$p" 2>/dev/null || + cp "$execdir/git-remote-http$X" "$execdir/$p" || exit; } +done From patchwork Fri Nov 2 22:37:40 2018 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: 10666273 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 5D00B17DB for ; Fri, 2 Nov 2018 22:38:03 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 4E1C92C43D for ; Fri, 2 Nov 2018 22:38:03 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 422672C41D; Fri, 2 Nov 2018 22:38:03 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C5EE22C41D for ; Fri, 2 Nov 2018 22:38:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728367AbeKCHq6 (ORCPT ); Sat, 3 Nov 2018 03:46:58 -0400 Received: from mail-wr1-f68.google.com ([209.85.221.68]:37501 "EHLO mail-wr1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728359AbeKCHq6 (ORCPT ); Sat, 3 Nov 2018 03:46:58 -0400 Received: by mail-wr1-f68.google.com with SMTP id z3-v6so3459045wru.4 for ; Fri, 02 Nov 2018 15:37:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=0mG5HYtasFXHR/13Bu2eg6gFNOYVTofoWcqgaq3pv9Y=; b=hG6Rh6SK6LyuxZHx3gdxNI2x397L2TP1gUuqgB3OBLxLe1CoxtEC+dSDWTbGoRYs6n CXIx6AuxF5atDRz/5vh+DMfaqSa+BkCI2IUueiBCBD1vVpGeUsv67UPXMsZKzFX7+bQI rb+Q7yy9g1Z19O6QrBpKR4RWOa5o1ushE1HPFOMsRlLnyhCRNOepYq4uYLTAWjglLfDR wBudYaI5efE6+477nc6ru11UvsuU+6iq/zzpgGtgNbHQbF1MXATx0m+M6ZcvEmzflB5R mLbEom5hsBdiu1+IIvuXh8dr3SjIGrnpyz/uQDUhrO3TB6u7lTaXcRFgTiX9XANBU4dn Ku5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=0mG5HYtasFXHR/13Bu2eg6gFNOYVTofoWcqgaq3pv9Y=; b=Hgcrj+pgZfFj0h7h9poOanrFDmxxDq25a5qQkOhqpmkW95pzD0XwA9CAzQtZv9ZLkC uXTApyzjU4xiJ1QE2T3dm/tBF4zJbF5JE0pFuDNNYGQXoo2Kb/ADz+BZmk8rFfrRg89U C06+JxxbwWZglCuCBfaSnL374N52VkyFqWKyT8VLSZZb5WDpSFE9OBLZdN4BtQ8bo2nF 6446rNzyAdaHlvPY8fhC2b7bGLLORGoGLQcdvlYu6R1b1hg7YXrQ16qpmVPoMiwyj+FQ h+FL8yEeEUipjTVvtbt2t5jweejp6JuYG5R2ZnXF7NVEcKQIJet6iXYy3OjUCoaOYLqT RmiQ== X-Gm-Message-State: AGRZ1gJPVit6E1k3QgQ/ZOHjN9WXlZRa4/d32qwUAdhF6UEGhWBXpplz 8sRFhscjxa7RlWvrNtlnEhfDtz3v X-Google-Smtp-Source: AJdET5fsGDlYh3kUtp3hfzfPz5XdF5evBjrMHYw3P/5xIjx4Ovref67MTAa8XwMstGkyn8hBO3H0qw== X-Received: by 2002:adf:f082:: with SMTP id n2-v6mr7379578wro.88.1541198276533; Fri, 02 Nov 2018 15:37:56 -0700 (PDT) Received: from u.nix.is ([2a01:4f8:190:5095::2]) by smtp.gmail.com with ESMTPSA id a12-v6sm21461469wrr.71.2018.11.02.15.37.55 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 02 Nov 2018 15:37:55 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Daniel Jacques , Johannes Schindelin , Steffen Prohaska , John Keeping , Stan Hu , Richard Clamp , Jeff King , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= Subject: [RFC/PATCH 2/5] Makefile: conform some of the code to our coding standards Date: Fri, 2 Nov 2018 22:37:40 +0000 Message-Id: <20181102223743.4331-3-avarab@gmail.com> X-Mailer: git-send-email 2.19.1.930.g4563a0d9d0 In-Reply-To: <87efkkdwcv.fsf@evledraar.gmail.com> References: <87efkkdwcv.fsf@evledraar.gmail.com> MIME-Version: 1.0 Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP This code is still very much unlike our usual style since it was lifted from the Makefile, but we can at least make some of it use the usual style and line spacing. Signed-off-by: Ævar Arnfjörð Bjarmason --- install_programs | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/install_programs b/install_programs index e287108112..d3333cd25f 100755 --- a/install_programs +++ b/install_programs @@ -50,17 +50,21 @@ do esac shift done && -{ test "$bindir/" = "$execdir/" || - for p in $list_bindir_standalone; do - $RM "$execdir/$p" && - test -n "$INSTALL_SYMLINKS" && - ln -s "$destdir_from_execdir/$bindir_relative/$p" "$execdir/$p" || - { test -z "$NO_INSTALL_HARDLINKS$NO_CROSS_DIRECTORY_HARDLINKS" && - ln "$bindir/$p" "$execdir/$p" 2>/dev/null || - cp "$bindir/$p" "$execdir/$p" || exit; } - done; -} && -for p in $list_bindir_git_dashed; do + +if test "$bindir/" != "$execdir/" +then + for p in $list_bindir_standalone; do + $RM "$execdir/$p" && + test -n "$INSTALL_SYMLINKS" && + ln -s "$destdir_from_execdir/$bindir_relative/$p" "$execdir/$p" || + { test -z "$NO_INSTALL_HARDLINKS$NO_CROSS_DIRECTORY_HARDLINKS" && + ln "$bindir/$p" "$execdir/$p" 2>/dev/null || + cp "$bindir/$p" "$execdir/$p" || exit; } + done +fi && + +for p in $list_bindir_git_dashed +do $RM "$bindir/$p" && test -n "$INSTALL_SYMLINKS" && ln -s "git$X" "$bindir/$p" || @@ -69,6 +73,7 @@ for p in $list_bindir_git_dashed; do ln -s "git$X" "$bindir/$p" 2>/dev/null || cp "$bindir/git$X" "$bindir/$p" || exit; } done && + for p in $list_execdir_git_dashed; do $RM "$execdir/$p" && test -n "$INSTALL_SYMLINKS" && @@ -78,6 +83,7 @@ for p in $list_execdir_git_dashed; do ln -s "git$X" "$execdir/$p" 2>/dev/null || cp "$execdir/git$X" "$execdir/$p" || exit; } done && + for p in $list_execdir_curl_aliases; do $RM "$execdir/$p" && test -n "$INSTALL_SYMLINKS" && From patchwork Fri Nov 2 22:37:41 2018 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: 10666269 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 9197117DB for ; Fri, 2 Nov 2018 22:38:02 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 82D9D2C43D for ; Fri, 2 Nov 2018 22:38:02 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 773932C4A0; Fri, 2 Nov 2018 22:38:02 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id F0BE82C486 for ; Fri, 2 Nov 2018 22:38:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728384AbeKCHq7 (ORCPT ); Sat, 3 Nov 2018 03:46:59 -0400 Received: from mail-wr1-f67.google.com ([209.85.221.67]:45567 "EHLO mail-wr1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728359AbeKCHq7 (ORCPT ); Sat, 3 Nov 2018 03:46:59 -0400 Received: by mail-wr1-f67.google.com with SMTP id k15-v6so469621wre.12 for ; Fri, 02 Nov 2018 15:37:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=m7ImqB4p4fpZ4QP/K9tBOzZnMKkxYzIoBIlJ7Qr34dk=; b=oSiYc9QUtzdEKw9NrF7bRuTscyukxQlPNqRB2iSjv/5rvJne5l3n9F0OlpOeQ3XhB9 Iazr3vHtqNU1gLVHSHjSeLxuskPQqvvabMfIs5ZOMJj9GenTK12tM4H5baq4l+KzY5LV GpeWILEs8mshiNFL9/bf7IwqI+SoHN/sZ3IYKSF6jZ4nyOFFxIYvZNurPri85bZi6if8 UhtxB3N8muj7uWrfJrA9XOEAdQ/M9VgxlGKF5aYhdoqdGKa//pDQBJ4D/vmGMfDpH5b0 z5bQyfxL5jCZNkP/BgpxqpQa9flVYHJUt33Dz0MjqiddQd+chmrabKhsS7lqLtVurXOF RaoQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=m7ImqB4p4fpZ4QP/K9tBOzZnMKkxYzIoBIlJ7Qr34dk=; b=aRhXECTbg41jGtkouTBLoVLInQgXUzsdfHztL69tp3P4mI/Wa9vQLdGcWcTolQzH2K xF97OgFBa1xCUs8+zEpvU7lPIMpRWfja//1u0TzXT/VMxRbbpwEHD8StF9sYQgYp332b KcIf36K+ClBmREHcGGogqPnsXXPPuypVYQqWBrqAgcFsrAYCszwCTj3NBZnrqpu/JG4E WFfqywKHQXlHuGAei/QrbBjldwfcEeb/4SULsakuoRePgdCyUpGaCuxUhzeZMwIMPp99 q0Kth24gLjq6uAUmzaMWIsN1nvW71cYzXIZ4gm0qZBjdCiGIpJkweldXVBgWpNhkfhJG SeJw== X-Gm-Message-State: AGRZ1gIliG9M3vm2eTpkSiDfonxING2KXGksLNvLX1gF0J/tF+d7g9dK tGkFZSrGtmyqZlllYqsl223ad52O X-Google-Smtp-Source: AJdET5dp6N5wUBIZ+xB9B78QACYoRzpEBNyt133MvqxYFazo2ZiddiDAaqE7bu/DFyrvJadKfxVTlw== X-Received: by 2002:adf:fbc6:: with SMTP id d6-v6mr7367832wrs.241.1541198278076; Fri, 02 Nov 2018 15:37:58 -0700 (PDT) Received: from u.nix.is ([2a01:4f8:190:5095::2]) by smtp.gmail.com with ESMTPSA id a12-v6sm21461469wrr.71.2018.11.02.15.37.57 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 02 Nov 2018 15:37:57 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Daniel Jacques , Johannes Schindelin , Steffen Prohaska , John Keeping , Stan Hu , Richard Clamp , Jeff King , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= Subject: [RFC/PATCH 3/5] Makefile: stop hiding failures during "install" Date: Fri, 2 Nov 2018 22:37:41 +0000 Message-Id: <20181102223743.4331-4-avarab@gmail.com> X-Mailer: git-send-email 2.19.1.930.g4563a0d9d0 In-Reply-To: <87efkkdwcv.fsf@evledraar.gmail.com> References: <87efkkdwcv.fsf@evledraar.gmail.com> MIME-Version: 1.0 Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Change the fallback mechanism where we try to create hardlinks and ultimately fall back on a plain copy to emit the errors it encounters instead of hiding them away and silently falling back to copying. Hiding these errors dates back to 3e073dc561 ("Makefile: always provide a fallback when hardlinks fail", 2008-08-25) when the existing "hardlink or copy" logic was amended to hide the errors. At that time "make install" hadn't yet been taught any of the NO_*_HARDLINK options, that happened later in 3426e34fed ("Add NO_CROSS_DIRECTORY_HARDLINKS support to the Makefile", 2009-05-11) and was finally finished to roughly the current form in 70de5e65e8 ("Makefile: NO_INSTALL_HARDLINKS", 2012-05-02). If someone is building a git in an environment where hard linking fails, they can now specify some combination of NO_INSTALL_HARDLINKS=YesPlease and NO_INSTALL_HARDLINKS=YesPlease, it doesn't make sense anymore to not only implicitly fall back to copying, but to do so silently. This change leaves no way to not get errors spewed if we're trying and failing to e.g. make symlinks and having to fall back on "cp". I think that's OK. Signed-off-by: Ævar Arnfjörð Bjarmason --- install_programs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/install_programs b/install_programs index d3333cd25f..367e9a6cdf 100755 --- a/install_programs +++ b/install_programs @@ -58,7 +58,7 @@ then test -n "$INSTALL_SYMLINKS" && ln -s "$destdir_from_execdir/$bindir_relative/$p" "$execdir/$p" || { test -z "$NO_INSTALL_HARDLINKS$NO_CROSS_DIRECTORY_HARDLINKS" && - ln "$bindir/$p" "$execdir/$p" 2>/dev/null || + ln "$bindir/$p" "$execdir/$p" || cp "$bindir/$p" "$execdir/$p" || exit; } done fi && @@ -69,8 +69,8 @@ do test -n "$INSTALL_SYMLINKS" && ln -s "git$X" "$bindir/$p" || { test -z "$NO_INSTALL_HARDLINKS" && - ln "$bindir/git$X" "$bindir/$p" 2>/dev/null || - ln -s "git$X" "$bindir/$p" 2>/dev/null || + ln "$bindir/git$X" "$bindir/$p" || + ln -s "git$X" "$bindir/$p" || cp "$bindir/git$X" "$bindir/$p" || exit; } done && @@ -79,8 +79,8 @@ for p in $list_execdir_git_dashed; do test -n "$INSTALL_SYMLINKS" && ln -s "$destdir_from_execdir/$bindir_relative/git$X" "$execdir/$p" || { test -z "$NO_INSTALL_HARDLINKS" && - ln "$execdir/git$X" "$execdir/$p" 2>/dev/null || - ln -s "git$X" "$execdir/$p" 2>/dev/null || + ln "$execdir/git$X" "$execdir/$p" || + ln -s "git$X" "$execdir/$p" || cp "$execdir/git$X" "$execdir/$p" || exit; } done && @@ -89,7 +89,7 @@ for p in $list_execdir_curl_aliases; do test -n "$INSTALL_SYMLINKS" && ln -s "git-remote-http$X" "$execdir/$p" || { test -z "$NO_INSTALL_HARDLINKS" && - ln "$execdir/git-remote-http$X" "$execdir/$p" 2>/dev/null || - ln -s "git-remote-http$X" "$execdir/$p" 2>/dev/null || + ln "$execdir/git-remote-http$X" "$execdir/$p" || + ln -s "git-remote-http$X" "$execdir/$p" || cp "$execdir/git-remote-http$X" "$execdir/$p" || exit; } done From patchwork Fri Nov 2 22:37:42 2018 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: 10666275 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id C6C5717D5 for ; Fri, 2 Nov 2018 22:38:04 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id B7BFD2C41D for ; Fri, 2 Nov 2018 22:38:04 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id AC2C82C486; Fri, 2 Nov 2018 22:38:04 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 2CF5C2C41D for ; Fri, 2 Nov 2018 22:38:04 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728417AbeKCHrB (ORCPT ); Sat, 3 Nov 2018 03:47:01 -0400 Received: from mail-wr1-f68.google.com ([209.85.221.68]:34621 "EHLO mail-wr1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728359AbeKCHrB (ORCPT ); Sat, 3 Nov 2018 03:47:01 -0400 Received: by mail-wr1-f68.google.com with SMTP id j26-v6so3471684wre.1 for ; Fri, 02 Nov 2018 15:38:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ZFdXPt83C7+I5xxrBX6P6Cl/LoZ4X/I57xbBvhThYf0=; b=QhkWqz23oUQNd601+bcNL9Lwh7JMuMwc9gQFKe4cTTHn0VpTMiiSksO390vLfAPK23 ERlUvIPENrpQTR+FwSahKpivwsZUytw69v5BbFFYNb2+RpWB9/yf0pLUT9PBFb3XZbTT U7F+LuE+4KZNiug8ATf5lTfPE/ztGZSXaaHM8JQwVeoE13gbNF9LymtEvvXo8njxcg2b G3+muJkkeMc5WarTNGJRz0XR7zKAn7BCbUDAD1GdSv5cM8VbxvFltb/VCp8AXIlrrsuO jI1ExFGBuwsL6Jxf2SvSwPnl5lTJNtBA0zxdOEOykaZrPQG4Ft9Gl9uF8ffL6xJd7QSX MHfg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ZFdXPt83C7+I5xxrBX6P6Cl/LoZ4X/I57xbBvhThYf0=; b=tf7+ckNagW/+9XJS5s8CrPMssbUJ6Caprm3VoGZYbnFNZ/iRGiEWpUxfSDwGC05D3g cAxKCmhyAgSj34aa9+jj7fmPLjPE9+iK5W3bi6JFSMz9+posnJVz+TvyomWCpEU/QO0y JdncwdmsSELtN67cF+lNL2evEvWZLPJ2aU4avcmZNNj2Mwhub7GzTyGP4DNZVYnD8sAR +uQB4oXbWeJjxkGpQawwn0jsKpJYIcAV7ahXtH16Cd5x7zTMGvXDNWrmBy0XKo+IAXs6 emf5XYl8OOiqyyQbJrJgVZaiCsTKZGFu1KIsIV9KZMTtxIQDtwZD9YHaYQHN0TWWMEOb arAQ== X-Gm-Message-State: AGRZ1gKQ3BmvToQobGEBGT2FYQ1krgxplwYJuz65Hc6bZLygn/zIA2Gs dIrcjRRnyDSu6Yt+dwsNUGV1t9VaxgM= X-Google-Smtp-Source: AJdET5dyGu5wGKClQvWHVCzCQqXyPSV9UNEQDIg+JlXTTtiYnYQeEhRs8CO8WuvKD+UokxzOV1Otlw== X-Received: by 2002:adf:bb0f:: with SMTP id r15-v6mr11745138wrg.24.1541198279738; Fri, 02 Nov 2018 15:37:59 -0700 (PDT) Received: from u.nix.is ([2a01:4f8:190:5095::2]) by smtp.gmail.com with ESMTPSA id a12-v6sm21461469wrr.71.2018.11.02.15.37.58 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 02 Nov 2018 15:37:59 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Daniel Jacques , Johannes Schindelin , Steffen Prohaska , John Keeping , Stan Hu , Richard Clamp , Jeff King , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= Subject: [RFC/PATCH 4/5] Makefile: add NO_INSTALL_SYMLINKS_FALLBACK switch Date: Fri, 2 Nov 2018 22:37:42 +0000 Message-Id: <20181102223743.4331-5-avarab@gmail.com> X-Mailer: git-send-email 2.19.1.930.g4563a0d9d0 In-Reply-To: <87efkkdwcv.fsf@evledraar.gmail.com> References: <87efkkdwcv.fsf@evledraar.gmail.com> MIME-Version: 1.0 Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Add a switch for use in conjunction with the INSTALL_SYMLINKS flag added in ad874608d8 ("Makefile: optionally symlink libexec/git-core binaries to bin/git", 2018-03-13). Now it's possible to install git with: INSTALL_SYMLINKS=YesPlease NO_INSTALL_SYMLINKS_FALLBACK=YesPlease And know for sure that there's not going to be any silent fallbacks on hardlinks or copying of files if symlinking fails. Signed-off-by: Ævar Arnfjörð Bjarmason --- Makefile | 5 ++++ install_programs | 69 ++++++++++++++++++++++++++++++++---------------- 2 files changed, 51 insertions(+), 23 deletions(-) diff --git a/Makefile b/Makefile index aa6ca1fa68..07c8b74353 100644 --- a/Makefile +++ b/Makefile @@ -342,6 +342,10 @@ all:: # within the same directory in some cases, INSTALL_SYMLINKS will # always symlink to the final target directly. # +# Define NO_INSTALL_SYMLINKS_FALLBACK if in conjunction with +# INSTALL_SYMLINKS if you'd prefer not to have the install procedure +# fallack on hardlinking or copying if "ln -s" fails. +# # Define NO_CROSS_DIRECTORY_HARDLINKS if you plan to distribute the installed # programs as a tar, where bin/ and libexec/ might be on different file systems. # @@ -2818,6 +2822,7 @@ endif --flag-install-symlinks="$(INSTALL_SYMLINKS)" \ --flag-no-install-hardlinks="$(NO_INSTALL_HARDLINKS)" \ --flag-no-cross-directory-hardlinks="$(NO_CROSS_DIRECTORY_HARDLINKS)" \ + --flag-no-install-symlinks-fallback="$(NO_INSTALL_SYMLINKS_FALLBACK)" \ --list-bindir-standalone="git$X $(filter $(install_bindir_programs),$(ALL_PROGRAMS))" \ --list-bindir-git-dashed="$(filter $(install_bindir_programs),$(BUILT_INS))" \ --list-execdir-git-dashed="$(BUILT_INS)" \ diff --git a/install_programs b/install_programs index 367e9a6cdf..51e08019dd 100755 --- a/install_programs +++ b/install_programs @@ -30,6 +30,9 @@ do --flag-no-cross-directory-hardlinks=*) NO_CROSS_DIRECTORY_HARDLINKS="${1#--flag-no-cross-directory-hardlinks=}" ;; + --flag-no-install-symlinks-fallback=*) + NO_INSTALL_SYMLINKS_FALLBACK="${1#--flag-no-install-symlinks-fallback=}" + ;; --list-bindir-standalone=*) list_bindir_standalone="${1#--list-bindir-standalone=}" ;; @@ -55,41 +58,61 @@ if test "$bindir/" != "$execdir/" then for p in $list_bindir_standalone; do $RM "$execdir/$p" && - test -n "$INSTALL_SYMLINKS" && - ln -s "$destdir_from_execdir/$bindir_relative/$p" "$execdir/$p" || - { test -z "$NO_INSTALL_HARDLINKS$NO_CROSS_DIRECTORY_HARDLINKS" && - ln "$bindir/$p" "$execdir/$p" || - cp "$bindir/$p" "$execdir/$p" || exit; } + if test -n "$INSTALL_SYMLINKS" -a -n "$NO_INSTALL_SYMLINKS_FALLBACK" + then + ln -s "$destdir_from_execdir/$bindir_relative/$p" "$execdir/$p" + else + test -n "$INSTALL_SYMLINKS" && + ln -s "$destdir_from_execdir/$bindir_relative/$p" "$execdir/$p" || + { test -z "$NO_INSTALL_HARDLINKS$NO_CROSS_DIRECTORY_HARDLINKS" && + ln "$bindir/$p" "$execdir/$p" || + cp "$bindir/$p" "$execdir/$p" || exit; } + fi done fi && for p in $list_bindir_git_dashed do $RM "$bindir/$p" && - test -n "$INSTALL_SYMLINKS" && - ln -s "git$X" "$bindir/$p" || - { test -z "$NO_INSTALL_HARDLINKS" && - ln "$bindir/git$X" "$bindir/$p" || - ln -s "git$X" "$bindir/$p" || - cp "$bindir/git$X" "$bindir/$p" || exit; } + if test -n "$INSTALL_SYMLINKS" -a -n "$NO_INSTALL_SYMLINKS_FALLBACK" + then + ln -s "git$X" "$bindir/$p" + else + test -n "$INSTALL_SYMLINKS" && + ln -s "git$X" "$bindir/$p" || + { test -z "$NO_INSTALL_HARDLINKS" && + ln "$bindir/git$X" "$bindir/$p" || + ln -s "git$X" "$bindir/$p" || + cp "$bindir/git$X" "$bindir/$p" || exit; } + fi done && for p in $list_execdir_git_dashed; do $RM "$execdir/$p" && - test -n "$INSTALL_SYMLINKS" && - ln -s "$destdir_from_execdir/$bindir_relative/git$X" "$execdir/$p" || - { test -z "$NO_INSTALL_HARDLINKS" && - ln "$execdir/git$X" "$execdir/$p" || - ln -s "git$X" "$execdir/$p" || - cp "$execdir/git$X" "$execdir/$p" || exit; } + if test -n "$INSTALL_SYMLINKS" -a -n "$NO_INSTALL_SYMLINKS_FALLBACK" + then + ln -s "$destdir_from_execdir/$bindir_relative/git$X" "$execdir/$p" + else + test -n "$INSTALL_SYMLINKS" && + ln -s "$destdir_from_execdir/$bindir_relative/git$X" "$execdir/$p" || + { test -z "$NO_INSTALL_HARDLINKS" && + ln "$execdir/git$X" "$execdir/$p" || + ln -s "git$X" "$execdir/$p" || + cp "$execdir/git$X" "$execdir/$p" || exit; } + fi done && for p in $list_execdir_curl_aliases; do $RM "$execdir/$p" && - test -n "$INSTALL_SYMLINKS" && - ln -s "git-remote-http$X" "$execdir/$p" || - { test -z "$NO_INSTALL_HARDLINKS" && - ln "$execdir/git-remote-http$X" "$execdir/$p" || - ln -s "git-remote-http$X" "$execdir/$p" || - cp "$execdir/git-remote-http$X" "$execdir/$p" || exit; } + if test -n "$INSTALL_SYMLINKS" -a -n "$NO_INSTALL_SYMLINKS_FALLBACK" + then + ln -s "git-remote-http$X" "$execdir/$p" + else + test -n "$INSTALL_SYMLINKS" && + ln -s "git-remote-http$X" "$execdir/$p" || + { test -z "$NO_INSTALL_HARDLINKS" && + ln "$execdir/git-remote-http$X" "$execdir/$p" || + ln -s "git-remote-http$X" "$execdir/$p" || + cp "$execdir/git-remote-http$X" "$execdir/$p" || exit; } + fi done From patchwork Fri Nov 2 22:37:43 2018 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: 10666277 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 9182D17D5 for ; Fri, 2 Nov 2018 22:38:06 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 7E7D72C41D for ; Fri, 2 Nov 2018 22:38:06 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 72FDC2C486; Fri, 2 Nov 2018 22:38:06 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id EC4A62C41D for ; Fri, 2 Nov 2018 22:38:05 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728423AbeKCHrD (ORCPT ); Sat, 3 Nov 2018 03:47:03 -0400 Received: from mail-wm1-f66.google.com ([209.85.128.66]:56211 "EHLO mail-wm1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727150AbeKCHrD (ORCPT ); Sat, 3 Nov 2018 03:47:03 -0400 Received: by mail-wm1-f66.google.com with SMTP id s10-v6so3217370wmc.5 for ; Fri, 02 Nov 2018 15:38:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Hz7NzerkvRdQ5lxOe5vBJJzUnIdMslo+52BNU1YE8j0=; b=L/J8UBeEA2h3o7ockGm1sqUWNx46kJk9iWqOC4l5/btkNdRMjOk/D3fDs1j/hg+0Uh sd2ceyLqAaC8TvFC5VfXQ/XLif78XmYtunrRxMkRm7Ck/XTq5ANl34BxDh6ZrxVzYUKE CmfZrjDq80YH3APD47mjNpgfoAmn6DsAqOUKPCoycJNtzjyLYA2WhgMyqh6e1N5GXKOA UrhDDvXJKOYDTPt0lb++hoIU08O5RDpgilSind98/j6JIegU2Uqaql0EQzA91MQbHatr KBVxtno2APc1rE7RVdXFfBV7b15o8IFnwqGhD+DkruBXMxK4KYekQ34awdtXn6lwcQN5 9SbQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Hz7NzerkvRdQ5lxOe5vBJJzUnIdMslo+52BNU1YE8j0=; b=E4ePgD27YWgL9kQWYScarXhW0Nhtk3Bq8KPxyE8jgacYNE/8NMGxvJBQFIkiNgSyCy xiTreMHAi2MQk/+2bCsOwlNLygIpqOP3gR790UNULLgAOYE3KcOSi1kUk+IvxHifCEb/ cPEE0x/NXEzAV/+Ni+hC9oNWZdC8d5kpLzUP/atPiMOxASdSjH1Cas3BY4trL2fqp6V8 WjNDNEltSOGgUi2PofwLe4g0ZoQyysKTR+H9GgwzcFcLF8QHEEPeZj6bDoalhsEFft4i PYHqcLTAZQKHnKdgWRh68LwutdiV4iZbGOCuZE4RbogLPX4aiShhJun0O9PVsyGOGV26 UZEg== X-Gm-Message-State: AGRZ1gJ1R9wesQsrEydQUmPMeKXil1tC+6ODD1oQ1fEGXJsu/1qTdFVu v0F32CtNJjH+DljkXcGlXzcNK4axIDg= X-Google-Smtp-Source: AJdET5eIDF1UN1UO+cOB69deuGSreaweeFTFKgDBArnpziN5tvSdL7ekFk0E18NjGeAZgNubyZhSfQ== X-Received: by 2002:a1c:af07:: with SMTP id y7-v6mr49221wme.33.1541198281219; Fri, 02 Nov 2018 15:38:01 -0700 (PDT) Received: from u.nix.is ([2a01:4f8:190:5095::2]) by smtp.gmail.com with ESMTPSA id a12-v6sm21461469wrr.71.2018.11.02.15.38.00 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 02 Nov 2018 15:38:00 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Daniel Jacques , Johannes Schindelin , Steffen Prohaska , John Keeping , Stan Hu , Richard Clamp , Jeff King , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= Subject: [RFC/PATCH 5/5] Makefile: Add a NO_INSTALL_BUILTIN_EXECDIR_ALIASES flag Date: Fri, 2 Nov 2018 22:37:43 +0000 Message-Id: <20181102223743.4331-6-avarab@gmail.com> X-Mailer: git-send-email 2.19.1.930.g4563a0d9d0 In-Reply-To: <87efkkdwcv.fsf@evledraar.gmail.com> References: <87efkkdwcv.fsf@evledraar.gmail.com> MIME-Version: 1.0 Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Back when git was initially written the likes of "git-add", "git-init" etc. were installed in the user's $PATH. A few years later everything, with a few exceptions like git-upload-pack and git-receive-pack, was expected to be invoked as "git $cmd". Now something like a decade later we're still installing these old commands in gitexecdir. This is so someone with a shellscript that still targets e.g. "git-init" can add $(git --exec-path) to their $PATH and not have to change their script. Let's add an option to break this backwards compatibility. Now with NO_INSTALL_BUILTIN_EXECDIR_ALIASES=YesPlease there's only 3 programs in the bindir that are hardlinked to "git" (receive-pack, upload-archive & upload-pack), and 3 in the gitexecdir (git-remote-{ftp,ftps,https} linked to git-remote-http). There's no cross-directory links anymore, so the "NO_CROSS_DIRECTORY_HARDLINKS" flag becomes redundant under this new option. 1. https://public-inbox.org/git/87woyfdkoi.fsf@evledraar.gmail.com/ Signed-off-by: Ævar Arnfjörð Bjarmason --- Makefile | 8 ++++++++ install_programs | 36 +++++++++++++++++++++--------------- 2 files changed, 29 insertions(+), 15 deletions(-) diff --git a/Makefile b/Makefile index 07c8b74353..a849a7b6d1 100644 --- a/Makefile +++ b/Makefile @@ -346,6 +346,13 @@ all:: # INSTALL_SYMLINKS if you'd prefer not to have the install procedure # fallack on hardlinking or copying if "ln -s" fails. # +# Define NO_INSTALL_BUILTIN_EXECDIR_ALIASES if you'd like to skip +# installing legacy such as "git-init" and "git-add" in the +# gitexecdir. Unless you're on a system where "which git-init" is +# expected to returns something set this. Users have been expected to +# use the likes of "git init" for ages now, these programs were only +# provided for legacy compatibility. +# # Define NO_CROSS_DIRECTORY_HARDLINKS if you plan to distribute the installed # programs as a tar, where bin/ and libexec/ might be on different file systems. # @@ -2823,6 +2830,7 @@ endif --flag-no-install-hardlinks="$(NO_INSTALL_HARDLINKS)" \ --flag-no-cross-directory-hardlinks="$(NO_CROSS_DIRECTORY_HARDLINKS)" \ --flag-no-install-symlinks-fallback="$(NO_INSTALL_SYMLINKS_FALLBACK)" \ + --flag-no-install-builtin-execdir-aliases="$(NO_INSTALL_BUILTIN_EXECDIR_ALIASES)" \ --list-bindir-standalone="git$X $(filter $(install_bindir_programs),$(ALL_PROGRAMS))" \ --list-bindir-git-dashed="$(filter $(install_bindir_programs),$(BUILT_INS))" \ --list-execdir-git-dashed="$(BUILT_INS)" \ diff --git a/install_programs b/install_programs index 51e08019dd..8d89cd9984 100755 --- a/install_programs +++ b/install_programs @@ -33,6 +33,9 @@ do --flag-no-install-symlinks-fallback=*) NO_INSTALL_SYMLINKS_FALLBACK="${1#--flag-no-install-symlinks-fallback=}" ;; + --flag-no-install-builtin-execdir-aliases=*) + NO_INSTALL_BUILTIN_EXECDIR_ALIASES="${1#--flag-no-install-builtin-execdir-aliases=}" + ;; --list-bindir-standalone=*) list_bindir_standalone="${1#--list-bindir-standalone=}" ;; @@ -54,7 +57,7 @@ do shift done && -if test "$bindir/" != "$execdir/" +if test "$bindir/" != "$execdir/" -a -z "$NO_INSTALL_BUILTIN_EXECDIR_ALIASES" then for p in $list_bindir_standalone; do $RM "$execdir/$p" && @@ -87,20 +90,23 @@ do fi done && -for p in $list_execdir_git_dashed; do - $RM "$execdir/$p" && - if test -n "$INSTALL_SYMLINKS" -a -n "$NO_INSTALL_SYMLINKS_FALLBACK" - then - ln -s "$destdir_from_execdir/$bindir_relative/git$X" "$execdir/$p" - else - test -n "$INSTALL_SYMLINKS" && - ln -s "$destdir_from_execdir/$bindir_relative/git$X" "$execdir/$p" || - { test -z "$NO_INSTALL_HARDLINKS" && - ln "$execdir/git$X" "$execdir/$p" || - ln -s "git$X" "$execdir/$p" || - cp "$execdir/git$X" "$execdir/$p" || exit; } - fi -done && +if test -z "$NO_INSTALL_BUILTIN_EXECDIR_ALIASES" +then + for p in $list_execdir_git_dashed; do + $RM "$execdir/$p" && + if test -n "$INSTALL_SYMLINKS" -a -n "$NO_INSTALL_SYMLINKS_FALLBACK" + then + ln -s "$destdir_from_execdir/$bindir_relative/git$X" "$execdir/$p" + else + test -n "$INSTALL_SYMLINKS" && + ln -s "$destdir_from_execdir/$bindir_relative/git$X" "$execdir/$p" || + { test -z "$NO_INSTALL_HARDLINKS" && + ln "$execdir/git$X" "$execdir/$p" || + ln -s "git$X" "$execdir/$p" || + cp "$execdir/git$X" "$execdir/$p" || exit; } + fi + done +fi && for p in $list_execdir_curl_aliases; do $RM "$execdir/$p" &&