From 7dd7ddac500cd3f453cd19606904ae406f5ffe03 Mon Sep 17 00:00:00 2001 From: Roman Bogorodskiy Date: Tue, 2 Mar 2021 18:31:36 +0400 Subject: [PATCH] build-aux: require GNU grep on FreeBSD MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit FreeBSD 13.x and newer ship BSD grep which apparently has some performance issues causing certain syntax check tests to run longer than the default 30 seconds timeout used by meson. However, GNU grep is still available through the textproc/gnugrep port, so require it on FreeBSD if /usr/bin/grep is a BSD grep to make checks pass in a reasonable time. Signed-off-by: Roman Bogorodskiy Reviewed-by: Ján Tomko --- build-aux/Makefile.in | 1 + build-aux/meson.build | 24 +++++++++++++++++++----- build-aux/syntax-check.mk | 1 - 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/build-aux/Makefile.in b/build-aux/Makefile.in index 0424ff39fc..415a8df305 100644 --- a/build-aux/Makefile.in +++ b/build-aux/Makefile.in @@ -5,6 +5,7 @@ top_builddir = @top_builddir@ FLAKE8 = @flake8_path@ RUNUTF8 = @runutf8@ PYTHON = @PYTHON3@ +GREP = @GREP@ # include syntax-check.mk file include $(top_srcdir)/build-aux/syntax-check.mk diff --git a/build-aux/meson.build b/build-aux/meson.build index c506feefd2..c44ed6821c 100644 --- a/build-aux/meson.build +++ b/build-aux/meson.build @@ -10,18 +10,32 @@ syntax_check_conf.set('flake8_path', flake8_path) syntax_check_conf.set('runutf8', ' '.join(runutf8)) syntax_check_conf.set('PYTHON3', python3_prog.path()) -configure_file( - input: 'Makefile.in', - output: '@BASENAME@', - configuration: syntax_check_conf, -) + +grep_prog = find_program('grep') if host_machine.system() == 'freebsd' make_prog = find_program('gmake') + + grep_cmd = run_command(grep_prog, '--version') + if grep_cmd.stdout().startswith('grep (BSD grep') + grep_prog = find_program('/usr/local/bin/grep') + grep_cmd = run_command(grep_prog, '--version') + if grep_cmd.stdout().startswith('grep (BSD grep') + error('GNU grep not found') + endif + endif else make_prog = find_program('make') endif +syntax_check_conf.set('GREP', grep_prog.path()) + +configure_file( + input: 'Makefile.in', + output: '@BASENAME@', + configuration: syntax_check_conf, +) + rc = run_command( 'sed', '-n', 's/^\\(sc_[a-zA-Z0-9_-]*\\):.*/\\1/p', diff --git a/build-aux/syntax-check.mk b/build-aux/syntax-check.mk index e1ccb74986..2f4f932a5b 100644 --- a/build-aux/syntax-check.mk +++ b/build-aux/syntax-check.mk @@ -27,7 +27,6 @@ ME := build-aux/syntax-check.mk # of the module description. But some packages import this file directly, # ignoring the module description. AWK ?= awk -GREP ?= grep # FreeBSD (and probably some other OSes too) ships own version of sed(1), not # compatible with the GNU sed. GNU sed is available as gsed(1), so use this # instead -- 2.47.2