[PATCH] make: add install-strip target

Subsystems: kernel build + files below scripts/ (unless maintained elsewhere), the rest

STALE1810d

4 messages, 3 authors, 2021-08-18 · open the first message on its own page

[PATCH] make: add install-strip target

From: Bagas Sanjaya <hidden>
Date: 2021-08-17 11:09:00

Previously to install Git with stripped binaries, users have to do `make
all` then `make strip` before doing `make install`. It is nice to have
`install-strip` target for convenience, so that they can simply type
`make install-strip` and have Git with stripped binaries installed.
On some environments where disk space and resources is limited (such as
embedded systems), installed size can be smaller that with non-stripped
binaries.

Also mention the target in INSTALL.

Signed-off-by: Bagas Sanjaya <redacted>
---
 INSTALL  | 5 +++++
 Makefile | 5 ++++-
 2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/INSTALL b/INSTALL
index 66389ce059..6e6303d482 100644
--- a/INSTALL
+++ b/INSTALL
@@ -25,6 +25,11 @@ set up install paths (via config.mak.autogen), so you can write instead
 	$ make all doc ;# as yourself
 	# make install install-doc install-html;# as root
 
+If you're tight on space (common on embedded systems), you can install
+with debugging info stripped with
+
+	# make install-strip
+
 If you're willing to trade off (much) longer build time for a later
 faster git you can also do a profile feedback build with
 
diff --git a/Makefile b/Makefile
index 9573190f1d..8c4633ba8e 100644
--- a/Makefile
+++ b/Makefile
@@ -3093,6 +3093,9 @@ endif
 	done && \
 	./check_bindir "z$$bindir" "z$$execdir" "$$bindir/git-add$X"
 
+install-strip: all strip
+	$(MAKE) install
+
 .PHONY: install-gitweb install-doc install-man install-man-perl install-html install-info install-pdf
 .PHONY: quick-install-doc quick-install-man quick-install-html
 install-gitweb:
@@ -3265,7 +3268,7 @@ ifdef MSVC
 	$(RM) compat/vcbuild/MSVC-DEFS-GEN
 endif
 
-.PHONY: all install profile-clean cocciclean clean strip
+.PHONY: all install install-strip profile-clean cocciclean clean strip
 .PHONY: shell_compatibility_test please_set_SHELL_PATH_to_a_more_modern_shell
 .PHONY: FORCE cscope
 
base-commit: 225bc32a989d7a22fa6addafd4ce7dcd04675dbf
-- 
2.25.1

Re: [PATCH] make: add install-strip target

From: Johannes Schindelin <hidden>
Date: 2021-08-17 21:28:53

Hi Bagas,

On Tue, 17 Aug 2021, Bagas Sanjaya wrote:
quoted hunk
diff --git a/Makefile b/Makefile
index 9573190f1d..8c4633ba8e 100644
--- a/Makefile
+++ b/Makefile
@@ -3093,6 +3093,9 @@ endif
 	done && \
 	./check_bindir "z$$bindir" "z$$execdir" "$$bindir/git-add$X"

+install-strip: all strip
Would those `all` and `strip` targets interfere with one another if `make
-j2` was called? If not, wouldn't it be sufficient to let `install-strip`
depend on `strip` alone?

Ciao,
Dscho
quoted hunk
+	$(MAKE) install
+
 .PHONY: install-gitweb install-doc install-man install-man-perl install-html install-info install-pdf
 .PHONY: quick-install-doc quick-install-man quick-install-html
 install-gitweb:
@@ -3265,7 +3268,7 @@ ifdef MSVC
 	$(RM) compat/vcbuild/MSVC-DEFS-GEN
 endif

-.PHONY: all install profile-clean cocciclean clean strip
+.PHONY: all install install-strip profile-clean cocciclean clean strip
 .PHONY: shell_compatibility_test please_set_SHELL_PATH_to_a_more_modern_shell
 .PHONY: FORCE cscope

base-commit: 225bc32a989d7a22fa6addafd4ce7dcd04675dbf
--
2.25.1

Re: [PATCH] make: add install-strip target

From: Eric Sunshine <hidden>
Date: 2021-08-17 21:49:17

On Tue, Aug 17, 2021 at 5:29 PM Johannes Schindelin
[off-list ref] wrote:
On Tue, 17 Aug 2021, Bagas Sanjaya wrote:
quoted
diff --git a/Makefile b/Makefile
@@ -3093,6 +3093,9 @@ endif
+install-strip: all strip
Would those `all` and `strip` targets interfere with one another if `make
-j2` was called? If not, wouldn't it be sufficient to let `install-strip`
depend on `strip` alone?
A more pertinent question, perhaps, is why would we need
`install-strip` at all? What benefit does it provide over simply
typing `make strip install`?

Re: [PATCH] make: add install-strip target

From: Johannes Schindelin <hidden>
Date: 2021-08-18 10:26:00

Hi Eric,

On Tue, 17 Aug 2021, Eric Sunshine wrote:
On Tue, Aug 17, 2021 at 5:29 PM Johannes Schindelin
[off-list ref] wrote:
quoted
On Tue, 17 Aug 2021, Bagas Sanjaya wrote:
quoted
diff --git a/Makefile b/Makefile
@@ -3093,6 +3093,9 @@ endif
+install-strip: all strip
Would those `all` and `strip` targets interfere with one another if `make
-j2` was called? If not, wouldn't it be sufficient to let `install-strip`
depend on `strip` alone?
A more pertinent question, perhaps, is why would we need
`install-strip` at all? What benefit does it provide over simply
typing `make strip install`?
That would require an order-only prerequisite (see
https://www.gnu.org/software/make/manual/html_node/Prerequisite-Types.html)
for `make -j2 strip install` to work correctly, i.e. something like this:

-- snip --
diff --git a/Makefile b/Makefile
index 2d5c822f7a8..9987f3b2c13 100644
--- a/Makefile
+++ b/Makefile
@@ -2990,7 +2990,7 @@ profile-install: profile
 profile-fast-install: profile-fast
 	$(MAKE) install

-install: all
+install: all | strip
 	$(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)'
-- snap --
I am not quite certain that this is compatible with other `make`
implementations we still might support (if there are any, I remember that
we often have to rely on `gmake` because the native `make` does not
understand our `Makefile`?), so that might need to be conditional on GNU
Make.

Ciao,
Dscho
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help