Merge pull request #1520 from mesonbuild/tingping/python3-module

Add get_path() and get_version() methods to the python3 module
pull/1440/merge
Jussi Pakkanen 8 years ago committed by GitHub
commit 99649e6690
  1. 22
      mesonbuild/modules/python3.py
  2. 10
      test cases/python3/1 basic/meson.build

@ -13,11 +13,13 @@
# limitations under the License.
import sys
import sysconfig
from .. import mesonlib, dependencies
from . import ExtensionModule
from mesonbuild.modules import ModuleReturnValue
class Python3Module(ExtensionModule):
def __init__(self):
super().__init__()
@ -45,5 +47,25 @@ class Python3Module(ExtensionModule):
py3 = dependencies.ExternalProgram('python3', sys.executable, silent=True)
return ModuleReturnValue(py3, [py3])
def language_version(self, state, args, kwargs):
if args or kwargs:
raise mesonlib.MesonException('language_version() takes no arguments.')
return ModuleReturnValue(sysconfig.get_python_version(), [])
def sysconfig_path(self, state, args, kwargs):
if len(args) != 1:
raise mesonlib.MesonException('sysconfig_path() requires passing the name of path to get.')
if kwargs:
raise mesonlib.MesonException('sysconfig_path() does not accept keywords.')
path_name = args[0]
valid_names = sysconfig.get_path_names()
if path_name not in valid_names:
raise mesonlib.MesonException('{} is not a valid path name {}.'.format(path_name, valid_names))
# Get a relative path without a prefix, e.g. lib/python3.6/site-packages
path = sysconfig.get_path(path_name, vars={'base': ''})[1:]
return ModuleReturnValue(path, [])
def initialize():
return Python3Module()

@ -3,6 +3,16 @@ project('python sample', 'c')
py3_mod = import('python3')
py3 = py3_mod.find_python()
py3_version = py3_mod.language_version()
if py3_version.version_compare('< 3.2')
error('Invalid python version!?')
endif
py3_purelib = py3_mod.sysconfig_path('purelib')
if not py3_purelib.endswith('site-packages')
error('Python3 purelib path seems invalid?')
endif
main = files('prog.py')
test('toplevel', py3, args : main)

Loading…
Cancel
Save