diff options
author | Chun-wei Fan <fanchunwei@src.gnome.org> | 2018-08-21 00:30:46 +0800 |
---|---|---|
committer | Chun-wei Fan <fanchunwei@src.gnome.org> | 2018-08-21 09:53:05 +0800 |
commit | 2c6b3b9a3593e9eeb5da0af54dfff3b0810dcea6 (patch) | |
tree | 053e6b785d818979378c2710c45c5ffda45ac819 | |
parent | 7378dedc564dbf7ba271853938ce0c58bff071b8 (diff) | |
download | gobject-introspection-2c6b3b9a3593e9eeb5da0af54dfff3b0810dcea6.tar.gz |
g-ir-tool-template.in: Don't hardcode /usr/bin/env
For Visual Studio builds, it is likely that we specify a specific Python
installation as there may well be multiple Python installations, but
_giscanner.pyd gets tied to the particular Python DLL that it was built
with. So, we cannot just use /usr/bin/env python3 in such a case on
Visual Studio, but instead we use the full path to the Python executable
in the shebang so that the correct Python installation is used, when
running the installed scripts. This is necessary as Meson could bump
the Python version it requires but _giscanner.pyd could not be used on
the newer Python that is required due to differences in the Python
version and the CRT Python itself is linked to, for instance.
We continue to use /usr/bin/env python[2|3] for other builds.
-rw-r--r-- | Makefile-tools.am | 2 | ||||
-rwxr-xr-x | tools/g-ir-tool-template.in | 2 | ||||
-rw-r--r-- | tools/meson.build | 9 |
3 files changed, 9 insertions, 4 deletions
diff --git a/Makefile-tools.am b/Makefile-tools.am index 8c4a069b..c70d9850 100644 --- a/Makefile-tools.am +++ b/Makefile-tools.am @@ -9,7 +9,7 @@ EXTRA_DIST += \ tools/g-ir-tool-template.in \ tools/meson.build -TOOL_SUBSTITUTIONS = -e s,@libdir\@,$(libdir), -e s,@datarootdir\@,$(datarootdir), -e s,@PYTHON\@,$(PYTHON), +TOOL_SUBSTITUTIONS = -e s,@libdir\@,$(libdir), -e s,@datarootdir\@,$(datarootdir), -e s,@PYTHON_CMD\@,\/usr\/bin\/env\ $(PYTHON), g-ir-scanner: tools/g-ir-tool-template.in _giscanner.la Makefile $(AM_V_GEN) sed $(TOOL_SUBSTITUTIONS) -e s,@TOOL_MODULE\@,scannermain, -e s,@TOOL_FUNCTION\@,scanner_main, $< > $@.tmp && mv $@.tmp $@ diff --git a/tools/g-ir-tool-template.in b/tools/g-ir-tool-template.in index 83279bd4..fb6b665b 100755 --- a/tools/g-ir-tool-template.in +++ b/tools/g-ir-tool-template.in @@ -1,4 +1,4 @@ -#!/usr/bin/env @PYTHON@ +#!@PYTHON_CMD@ # -*- Mode: Python -*- # GObject-Introspection - a framework for introspecting GObject libraries # Copyright (C) 2008 Johan Dahlin diff --git a/tools/meson.build b/tools/meson.build index 73472664..912eb6ba 100644 --- a/tools/meson.build +++ b/tools/meson.build @@ -9,13 +9,18 @@ if get_option('doctool') tools += [['g-ir-doc-tool', 'docmain', 'doc_main']] endif -python_name = 'python@0@'.format(python.language_version().split('.')[0]) +if cc.get_id() == 'msvc' + python_cmd = python.get_variable('prefix') + '\\python.exe' +else + python_cmd = '/usr/bin/env python@0@'.format(python.language_version().split('.')[0]) +endif + tool_output = [] foreach tool : tools tools_conf = configuration_data() tools_conf.set('libdir', libdir_abs) tools_conf.set('datarootdir', datadir_abs) - tools_conf.set('PYTHON', python_name) + tools_conf.set('PYTHON_CMD', python_cmd) tools_conf.set('TOOL_MODULE', tool[1]) tools_conf.set('TOOL_FUNCTION', tool[2]) |