git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH] Makefile: avoid a fork in Cygwin version check

From
Jonathan Nieder <jrnieder@gmail.com>
Date
Apr 5, 2010, 15:11 UTC
Message-ID
<20100405151059.GB13761@progeny.tock>
In-Reply-To
<4BB9F756.7030701@redhat.com>
From: Eric Blake <eblake@redhat.com>

It is nice to use fewer processes, since forking is so expensive on cygwin. So use a case statement instead of expr.

But does that work to have unbalanced ) in a makefile $(shell)? On the other hand, this is already in a chunk guarded by $(uname_S) being cygwin, and we know that cygwin shells understand:

	case '$(uname_R)' in (1.[1-6].*) echo old;; esac
even though it is not portable to other shells, like NetBSD ash.
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
---
Eric Blake wrote:
>> Eric Blake wrote:
>>> ifeq ($(shell case '$(uname_R)' in (1.[1-6].*) echo old;; esac),old)
[...]
> Junio mentioned he had already queued your first version of the patch;
> are you going to re-submit it with this tweak?

Since the patch to future-proof the version check has already hit master, here’s the change as an independent patch against master.

 Makefile |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/Makefile b/Makefile
index e210a42..767fb66 100644
--- a/Makefile
+++ b/Makefile
@@ -831,7 +831,7 @@ ifeq ($(uname_S),SunOS)
 	BASIC_CFLAGS += -D__EXTENSIONS__ -D__sun__ -DHAVE_ALLOCA_H
 endif
 ifeq ($(uname_O),Cygwin)
-	ifeq ($(shell expr "$(uname_R)" : '1\.[1-6]\.'),4)
+	ifeq ($(shell case '$(uname_R)' in (1.[1-6].*) echo old;; esac),old)
 		NO_D_TYPE_IN_DIRENT = YesPlease
 		NO_D_INO_IN_DIRENT = YesPlease
 		NO_STRCASESTR = YesPlease
-- 
1.7.0.3
Previous: Eric BlakeNext: Andreas Schwab
Message 10 of 11 in “Makefile: update defaults for modern Cygwin”
  1. Makefile: update defaults for modern CygwinEric Blake, Apr 1, 2010
  2. Junio C HamanoApr 2, 2010
  3. Eric BlakeApr 2, 2010
  4. Jonathan NiederApr 3, 2010
  5. Junio C HamanoApr 3, 2010
  6. Teach mailinfo %< as an alternative scissors markJonathan Nieder, Apr 3, 2010
  7. Eric BlakeApr 5, 2010
  8. Jonathan NiederApr 5, 2010
  9. Eric BlakeApr 5, 2010
  10. Makefile: avoid a fork in Cygwin version checkJonathan Nieder, Apr 5, 2010
  11. Andreas SchwabApr 5, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.