From: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
To: Bagas Sanjaya <bagasdotme@gmail.com>
Cc: git@vger.kernel.org, "Junio C Hamano" <gitster@pobox.com>,
"Carlo Arenas" <carenas@gmail.com>,
"Đoàn Trần Công Danh" <congdanhqx@gmail.com>,
felipe.contreras@gmail.com,
"Eric Sunshine" <sunshine@sunshineco.com>,
"Johannes Schindelin" <Johannes.Schindelin@gmx.de>,
"Jeff Hostetler" <git@jeffhostetler.com>
Subject: Re: [PATCH v3] make: add INSTALL_STRIP option variable
Date: Thu, 16 Sep 2021 11:50:30 +0200 [thread overview]
Message-ID: <87a6kchlqc.fsf@evledraar.gmail.com> (raw)
In-Reply-To: <20210902121104.14778-1-bagasdotme@gmail.com>
On Thu, Sep 02 2021, Bagas Sanjaya wrote:
> From: Junio C Hamano <gitster@pobox.com>
>
> Add $(INSTALL_STRIP), which allows passing stripping options to
> $(INSTALL).
>
> For this to work, installing executables must be split to installing
> compiled binaries and scripts portions, since $(INSTALL_STRIP) is only
> meaningful to the former.
>
> Users can set this variable depending on their system. For example,
> Linux users can use `-s --strip-program=strip`, while FreeBSD users can
> simply set to `-s` and choose strip program with $STRIPBIN.
>
> Signed-off-by: Bagas Sanjaya <bagasdotme@gmail.com>
> ---
>
> Changes from v3 [1]:
> - Squash suggestion patch from Junio, which suggests dropping
> install-stripped target and rename $(INSTALL_OPTS) to
> $(INSTALL_STRIP).
> - Describe $(INSTALL_STRIP) usage on the top of Makefile
>
> Note: In the future, we may add global $(INSTALL_OPTS), which applies
> to both compiled binaries and scripts. When such happens, we should
> rename $(INSTALL_STRIP) to $(INSTALL_STRIP_OPTS).
I see this landed on "master" already, but in case you're interested on
follow-ing up:
I think the suggestion in
https://lore.kernel.org/git/xmqqo89cqkt9.fsf@gitster.g/ is to make this
a boolean variable, and in any case I think that makes more sense here,
since....
> [1]: https://lore.kernel.org/git/xmqqo89cqkt9.fsf@gitster.g/T/#t
>
> Makefile | 15 ++++++++++++---
> 1 file changed, 12 insertions(+), 3 deletions(-)
>
> diff --git a/Makefile b/Makefile
> index d1feab008f..ebef4da50c 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -465,6 +465,9 @@ all::
> # the global variable _wpgmptr containing the absolute path of the current
> # executable (this is the case on Windows).
> #
> +# INSTALL_STRIP can be set to "-s" to strip binaries during installation,
> +# if your $(INSTALL) command supports the option.
> +#
> # Define GENERATE_COMPILATION_DATABASE to "yes" to generate JSON compilation
> # database entries during compilation if your compiler supports it, using the
> # `-MJ` flag. The JSON entries will be placed in the `compile_commands/`
> @@ -3004,7 +3007,8 @@ mergetools_instdir = $(prefix)/$(mergetoolsdir)
> endif
> mergetools_instdir_SQ = $(subst ','\'',$(mergetools_instdir))
>
> -install_bindir_programs := $(patsubst %,%$X,$(BINDIR_PROGRAMS_NEED_X)) $(BINDIR_PROGRAMS_NO_X)
> +install_bindir_xprograms := $(patsubst %,%$X,$(BINDIR_PROGRAMS_NEED_X))
> +install_bindir_programs := $(install_bindir_xprograms) $(BINDIR_PROGRAMS_NO_X)
>
> .PHONY: profile-install profile-fast-install
> profile-install: profile
> @@ -3013,12 +3017,17 @@ profile-install: profile
> profile-fast-install: profile-fast
> $(MAKE) install
>
> +INSTALL_STRIP =
> +
> install: all
> $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(bindir_SQ)'
> $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(gitexec_instdir_SQ)'
> - $(INSTALL) $(ALL_PROGRAMS) '$(DESTDIR_SQ)$(gitexec_instdir_SQ)'
> + $(INSTALL) $(INSTALL_STRIP) $(PROGRAMS) '$(DESTDIR_SQ)$(gitexec_instdir_SQ)'
> + $(INSTALL) $(SCRIPTS) '$(DESTDIR_SQ)$(gitexec_instdir_SQ)'
> $(INSTALL) -m 644 $(SCRIPT_LIB) '$(DESTDIR_SQ)$(gitexec_instdir_SQ)'
> - $(INSTALL) $(install_bindir_programs) '$(DESTDIR_SQ)$(bindir_SQ)'
> + $(INSTALL) $(INSTALL_STRIP) $(install_bindir_xprograms) '$(DESTDIR_SQ)$(bindir_SQ)'
> + $(INSTALL) $(BINDIR_PROGRAMS_NO_X) '$(DESTDIR_SQ)$(bindir_SQ)'
> +
> ifdef MSVC
> # We DO NOT install the individual foo.o.pdb files because they
> # have already been rolled up into the exe's pdb file.
>
> base-commit: 6c40894d2466d4e7fddc047a05116aa9d14712ee
...this really is not an INSTALL_STRIP but (using some combination of
your own naming) a "INSTALL_XPROGRAMS_OPTS" or "INSTALL_XOPTS". I.e. you
can supply arbitrary options to "install" with this, but only for
binaries.
Also doesn't this misbehave under MSVC when combined with *.pdb files?
See dce7d295514 (msvc: support building Git using MS Visual C++,
2019-06-25) and a8b5355d808 (msvc: copy the correct `.pdb` files in the
Makefile target `install`, 2020-09-21) , i.e. the code at the start of
your diff context.
Does stripping the main binary while having a *.pdb file error or MSCV,
or make the *.pdb file useless, or is *.pdb an unconditional equivalent
of INSTALL_STRIP=-s on MSCV that we should disable if this
hopefully-then-boolean INSTALL_STRIP option is enabled?
next prev parent reply other threads:[~2021-09-16 10:13 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-02 12:11 [PATCH v3] make: add INSTALL_STRIP option variable Bagas Sanjaya
2021-09-16 9:50 ` Ævar Arnfjörð Bjarmason [this message]
2021-09-16 10:36 ` Bagas Sanjaya
2021-09-18 7:46 ` Ævar Arnfjörð Bjarmason
2021-09-16 19:23 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87a6kchlqc.fsf@evledraar.gmail.com \
--to=avarab@gmail.com \
--cc=Johannes.Schindelin@gmx.de \
--cc=bagasdotme@gmail.com \
--cc=carenas@gmail.com \
--cc=congdanhqx@gmail.com \
--cc=felipe.contreras@gmail.com \
--cc=git@jeffhostetler.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=sunshine@sunshineco.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).