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

[PATCH v4 30/31] grep: given --threads with NO_PTHREADS=YesPlease, warn

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
May 25, 2017, 19:45 UTC
Message-ID
<20170525194535.9324-31-avarab@gmail.com>
In-Reply-To
<20170525194535.9324-1-avarab@gmail.com>

Add a warning about missing thread support when grep.threads or --threads is set to a non 0 (default) or 1 (no parallelism) value under NO_PTHREADS=YesPlease.

This is for consistency with the index-pack & pack-objects commands, which also take a --threads option & are configurable via pack.threads, and have long warned about the same under NO_PTHREADS=YesPlease.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
 builtin/grep.c  | 13 +++++++++++++
 t/t7810-grep.sh | 18 ++++++++++++++++++
 2 files changed, 31 insertions(+)
diff --git a/builtin/grep.c b/builtin/grep.c
index a191e2976b..3c721b75a5 100644
--- a/builtin/grep.c
+++ b/builtin/grep.c
@@ -289,6 +289,17 @@ static int grep_cmd_config(const char *var, const char *value, void *cb)
 		if (num_threads < 0)
 			die(_("invalid number of threads specified (%d) for %s"),
 			    num_threads, var);
+#ifdef NO_PTHREADS
+		else if (num_threads && num_threads != 1) {
+			/*
+			 * TRANSLATORS: %s is the configuration
+			 * variable for tweaking threads, currently
+			 * grep.threads
+			 */
+			warning(_("no threads support, ignoring %s"), var);
+			num_threads = 0;
+		}
+#endif
 	}
 
 	return st;
@@ -1229,6 +1240,8 @@ int cmd_grep(int argc, const char **argv, const char *prefix)
 	else if (num_threads < 0)
 		die(_("invalid number of threads specified (%d)"), num_threads);
 #else
+	if (num_threads)
+		warning(_("no threads support, ignoring --threads"));
 	num_threads = 0;
 #endif
 
diff --git a/t/t7810-grep.sh b/t/t7810-grep.sh
index 561709ef6a..f106387820 100755
--- a/t/t7810-grep.sh
+++ b/t/t7810-grep.sh
@@ -791,6 +791,24 @@ do
 	"
 done
 
+test_expect_success !PTHREADS,C_LOCALE_OUTPUT 'grep --threads=N or pack.threads=N warns when no pthreads' '
+	git grep --threads=2 Hello hello_world 2>err &&
+	grep ^warning: err >warnings &&
+	test_line_count = 1 warnings &&
+	grep -F "no threads support, ignoring --threads" err &&
+	git -c grep.threads=2 grep Hello hello_world 2>err &&
+	grep ^warning: err >warnings &&
+	test_line_count = 1 warnings &&
+	grep -F "no threads support, ignoring grep.threads" err &&
+	git -c grep.threads=2 grep --threads=4 Hello hello_world 2>err &&
+	grep ^warning: err >warnings &&
+	test_line_count = 2 warnings &&
+	grep -F "no threads support, ignoring --threads" err &&
+	grep -F "no threads support, ignoring grep.threads" err &&
+	git -c grep.threads=0 grep --threads=0 Hello hello_world 2>err &&
+	test_line_count = 0 err
+'
+
 test_expect_success 'grep from a subdirectory to search wider area (1)' '
 	mkdir -p s &&
 	(
-- 
2.13.0.303.g4ebf302169
Previous: Ævar Arnfjörð BjarmasonNext: Ævar Arnfjörð Bjarmason
Message 27 of 32 in “Easy to review grep & pre-PCRE changes”
  1. 00/31 Easy to review grep & pre-PCRE changesÆvar Arnfjörð Bjarmason, May 25, 2017
  2. 01/31 Makefile & configure: reword inaccurate comment about PCREÆvar Arnfjörð Bjarmason, May 25, 2017
  3. 02/31 grep & rev-list doc: stop promising libpcre for --perl-regexpÆvar Arnfjörð Bjarmason, May 25, 2017
  4. 04/31 log: add exhaustive tests for pattern style options & configÆvar Arnfjörð Bjarmason, May 25, 2017
  5. 03/31 test-lib: rename the LIBPCRE prerequisite to PCREÆvar Arnfjörð Bjarmason, May 25, 2017
  6. 05/31 log: make --regexp-ignore-case work with --perl-regexpÆvar Arnfjörð Bjarmason, May 25, 2017
  7. 07/31 grep: add a test for backreferences in PCRE patternsÆvar Arnfjörð Bjarmason, May 25, 2017
  8. 08/31 grep: change non-ASCII -i test to stop using --debugÆvar Arnfjörð Bjarmason, May 25, 2017
  9. 06/31 grep: add a test asserting that --perl-regexp dies when !PCREÆvar Arnfjörð Bjarmason, May 25, 2017
  10. 09/31 grep: add tests for --threads=N and grep.threadsÆvar Arnfjörð Bjarmason, May 25, 2017
  11. 10/31 grep: amend submodule recursion test for regex engine testingÆvar Arnfjörð Bjarmason, May 25, 2017
  12. 11/31 grep: add tests for grep pattern types being passed to submodulesÆvar Arnfjörð Bjarmason, May 25, 2017
  13. 12/31 grep: add a test helper function for less verbose -f \0 testsÆvar Arnfjörð Bjarmason, May 25, 2017
  14. 13/31 grep: prepare for testing binary regexes containing rx metacharactersÆvar Arnfjörð Bjarmason, May 25, 2017
  15. 14/31 grep: add tests to fix blind spots with \0 patternsÆvar Arnfjörð Bjarmason, May 25, 2017
  16. 16/31 perf: emit progress output when unpacking & buildingÆvar Arnfjörð Bjarmason, May 25, 2017
  17. 18/31 perf: add a comparison test of grep regex engines with -FÆvar Arnfjörð Bjarmason, May 25, 2017
  18. 17/31 perf: add a comparison test of grep regex enginesÆvar Arnfjörð Bjarmason, May 25, 2017
  19. 15/31 perf: add a GIT_PERF_MAKE_COMMAND for when *_MAKE_OPTS won't doÆvar Arnfjörð Bjarmason, May 25, 2017
  20. 19/31 perf: add a comparison test of log --grep regex enginesÆvar Arnfjörð Bjarmason, May 25, 2017
  21. 20/31 perf: add a comparison test of log --grep regex engines with -FÆvar Arnfjörð Bjarmason, May 25, 2017
  22. 24/31 grep: change the internal PCRE macro names to be PCRE1Ævar Arnfjörð Bjarmason, May 25, 2017
  23. 23/31 grep: factor test for \0 in grep patterns into a functionÆvar Arnfjörð Bjarmason, May 25, 2017
  24. 21/31 grep: catch a missing enum in switch statementÆvar Arnfjörð Bjarmason, May 25, 2017
  25. 22/31 grep: remove redundant regflags assignmentsÆvar Arnfjörð Bjarmason, May 25, 2017
  26. 28/31 pack-objects & index-pack: add test for --threads warningÆvar Arnfjörð Bjarmason, May 25, 2017
  27. 30/31 grep: given --threads with NO_PTHREADS=YesPlease, warnÆvar Arnfjörð Bjarmason, May 25, 2017
  28. 25/31 grep: change internal *pcre* variable & function names to be *pcre1*Ævar Arnfjörð Bjarmason, May 25, 2017
  29. 31/31 grep: assert that threading is enabled when calling grep_{lock,unlock}Ævar Arnfjörð Bjarmason, May 25, 2017
  30. 29/31 pack-objects: fix buggy warning about threadsÆvar Arnfjörð Bjarmason, May 25, 2017
  31. 27/31 test-lib: add a PTHREADS prerequisiteÆvar Arnfjörð Bjarmason, May 25, 2017
  32. 26/31 grep: move is_fixed() earlier to avoid forward declarationÆvar Arnfjörð Bjarmason, May 25, 2017

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.