shiboken-helper.py
46 lines
| 2.0 KiB
| text/x-python
|
PythonLexer
r1480 | #!/bin/env python3 | |||
import os | ||||
import sys | ||||
import importlib | ||||
import argparse | ||||
from glob import glob | ||||
shiboken2_generator = importlib.import_module('shiboken2_generator') | ||||
shiboken2 = importlib.import_module('shiboken2') | ||||
PySide2 = importlib.import_module('PySide2') | ||||
parser = argparse.ArgumentParser(description='PySide2/shiboken2 ') | ||||
group = parser.add_mutually_exclusive_group() | ||||
group.add_argument('--libs',action='store_true') | ||||
group.add_argument('--includes',action='store_true') | ||||
parser.add_argument('--modules') | ||||
group.add_argument('--typesystem', action='store_true') | ||||
args = parser.parse_args() | ||||
def first_existing_path(path_list): | ||||
return next((path for path in path_list if os.path.exists(path)), None) | ||||
if shiboken2.__file__ and shiboken2_generator.__file__ and PySide2.__file__: | ||||
PySide2_inc = first_existing_path([PySide2.__path__[0]+'/include','/usr/include/PySide2']) | ||||
PySide2_typesys = first_existing_path([PySide2.__path__[0]+'/typesystems','/usr/share/PySide2/typesystems']) | ||||
PySide2_includes = first_existing_path([PySide2.__path__[0]+'/include','/usr/include/PySide2']) | ||||
shiboken2_includes = first_existing_path([shiboken2.__path__[0]+'/include','/usr/include/shiboken2']) | ||||
if args.typesystem: | ||||
print(PySide2_typesys) | ||||
modules = args.modules.split(',') | ||||
if args.libs: | ||||
main_lib = (glob(shiboken2.__path__[0]+'/libshiboken2'+importlib.machinery.EXTENSION_SUFFIXES[0])+glob("/usr/lib64/"+'/libshiboken2'+importlib.machinery.EXTENSION_SUFFIXES[0]))[0] | ||||
main_lib += " "+(glob(PySide2.__path__[0]+'/libpyside2'+importlib.machinery.EXTENSION_SUFFIXES[0])+glob("/usr/lib64/"+'/libpyside2'+importlib.machinery.EXTENSION_SUFFIXES[0]))[0] | ||||
modules_libs = [importlib.import_module(f'PySide2.{module}').__file__ for module in modules] | ||||
print(" ".join([main_lib]+ modules_libs)) | ||||
if args.includes: | ||||
modules_incs = [f"-I{PySide2_includes}/{module}" for module in modules] | ||||
print(" ".join([f"-I{PySide2_includes} -I{shiboken2_includes}"]+ modules_incs)) | ||||