From c164b88ac1178a5899308a0a136a3d80f0a8a9cb Mon Sep 17 00:00:00 2001 From: Nirbheek Chauhan Date: Fri, 8 Feb 2019 16:42:43 +0530 Subject: [PATCH] meson: Extract flex version using a regex inside a script Different builds of Flex on different platforms output different strings in --version. For example: macOS: flex 2.5.35 Apple(flex-31) Windows: win_flex.exe 2.6.4 C:\Program Files (x86)\GnuWin32\bin\flex.EXE version 2.5.4 We need to look for a string that looks like a version, which means a regex till https://github.com/mesonbuild/meson/issues/1609 is fixed. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/356 --- gst/parse/get_flex_version.py | 11 +++++++++++ gst/parse/meson.build | 9 +++------ 2 files changed, 14 insertions(+), 6 deletions(-) create mode 100644 gst/parse/get_flex_version.py diff --git a/gst/parse/get_flex_version.py b/gst/parse/get_flex_version.py new file mode 100644 index 0000000..643c01c --- /dev/null +++ b/gst/parse/get_flex_version.py @@ -0,0 +1,11 @@ +#!/usr/bin/env python3 + +import re +import sys +import subprocess + +flex = sys.argv[1] + +out = subprocess.check_output([flex, '--version'], universal_newlines=True, + stderr=subprocess.STDOUT, stdin=subprocess.DEVNULL) +print(re.search(r'(\d+\.\d+(\.\d+)?)', out).group()) diff --git a/gst/parse/meson.build b/gst/parse/meson.build index ac3b34d..a843398 100644 --- a/gst/parse/meson.build +++ b/gst/parse/meson.build @@ -6,12 +6,9 @@ flex_cdata = configuration_data() flex_min_version='2.5.31' flex = find_program('flex', 'win_flex') -flexversion_res = run_command([flex, '--version']) -if flexversion_res.returncode() != 0 - error('Could not get flex version (@0@)'.format(flexversion_res.stderr())) -endif - -flexversion = flexversion_res.stdout().split('\n')[0].split(' ')[-1].strip() +get_flex_version = find_program('get_flex_version.py') +flexversion_res = run_command([get_flex_version, flex], check: true) +flexversion = flexversion_res.stdout().strip() if flexversion.version_compare('<' + flex_min_version) error('flex version @0@ >= @1@: NO'.format(flexversion, flex_min_version)) else -- 2.7.4