threads / patch / 54583

patch, 8 partsgit-gui/Makefile: conditionally include GIT-VERSION-FILE

Subject: [PATCH 4/8] git-gui/Makefile: conditionally include GIT-VERSION-FILE

## tl;dr

One message between Nov 5, 2020 and Nov 5, 2020. Diffs are folded; open one to read it.

replies: 0people: 1as markdown or json

Ramsay Jones· Nov 5, 2020, 21:06 UTC · lore

The 'clean' target is still noticeably slow on cygwin, despite the improvements made by previous patches. For example, the second invocation of 'make clean' below:

  $ make clean >/dev/null 2>&1
  $ make clean
  ...
  make -C git-gui clean
  make[1]: Entering directory '/home/ramsay/git/git-gui'
  GITGUI_VERSION = 0.21.0.78.g38c2a
  rm -rf git-gui lib/tclIndex po/*.msg
  ...
  $

has been timed at 8.430s on my laptop (on old core i5-4200M @ 2.50GHz, 8GB RAM, 1TB HDD).

Notice that the Makefile, as part of processing the 'clean' target, is updating the 'git-gui/GIT-VERSION-FILE' (not to be confused with the similarly named file at the root directory of the repository). This is to ensure that the $(GITGUI_VERSION) make variable is set, once that file had been included. (The Makefile target uses the 'git-gui/GIT-VERSION-GEN' script to generate that file, which should also not be confused with the similarly named script at the root). However, the 'clean' target does not use the $(GITGUI_VERSION) variable, so this is wasted effort.

In order to eliminate such wasted effort, use the value of the internal $(MAKECMDGOALS) variable to only '-include GIT-VERSION-FILE' when the target is not 'clean'. (This drops the time down to 6.454s, on my laptop, giving an improvement of 23.44%).

Signed-off-by: Ramsay Jones <ramsay@ramsayjones.plus.com>
---
 git-gui/Makefile | 2 ++
 1 file changed, 2 insertions(+)
Show changes to git-gui/Makefile +2 −0
diff --git a/git-gui/Makefile b/git-gui/Makefile
index f10caedaa7..56c85a85c1 100644
--- a/git-gui/Makefile
+++ b/git-gui/Makefile
@@ -9,7 +9,9 @@ all::
 
 GIT-VERSION-FILE: FORCE
 	@$(SHELL_PATH) ./GIT-VERSION-GEN
+ifneq ($(MAKECMDGOALS),clean)
 -include GIT-VERSION-FILE
+endif
 
 uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo not')
 uname_O := $(shell sh -c 'uname -o 2>/dev/null || echo not')
-- 
2.29.0

← back to recent threads