The Meson Build System
http://mesonbuild.com/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
1.8 KiB
60 lines
1.8 KiB
#!hint/python3 |
|
|
|
""" |
|
PyInstaller hook to make mesonbuild include everything it needs to. |
|
""" |
|
|
|
import os |
|
from glob import glob |
|
|
|
from PyInstaller.utils.hooks import collect_data_files |
|
|
|
datas = [] |
|
hiddenimports = [] |
|
|
|
def get_all_modules_from_dir(dirname): |
|
''' |
|
Get all modules required for Meson itself from directories. |
|
''' |
|
modname = os.path.basename(dirname) |
|
modules = [os.path.splitext(os.path.split(x)[1])[0] for x in glob(os.path.join(dirname, '*'))] |
|
modules = ['mesonbuild.' + modname + '.' + x for x in modules if not x.startswith('_')] |
|
return modules |
|
|
|
datas += collect_data_files('mesonbuild.scripts', include_py_files=True, excludes=['**/__pycache__']) |
|
datas += collect_data_files('mesonbuild.cmake.data') |
|
datas += collect_data_files('mesonbuild.dependencies.data') |
|
|
|
# lazy-loaded |
|
hiddenimports += get_all_modules_from_dir('mesonbuild/dependencies') |
|
# imported by meson.build files |
|
hiddenimports += get_all_modules_from_dir('mesonbuild/modules') |
|
# executed when named on CLI |
|
hiddenimports += get_all_modules_from_dir('mesonbuild/scripts') |
|
|
|
# Python packagers want to be minimal and only copy the things |
|
# that they can see being used. They are blind to many things. |
|
hiddenimports += [ |
|
# we run distutils as a subprocess via INTROSPECT_COMMAND. |
|
'distutils.archive_util', |
|
'distutils.cmd', |
|
'distutils.config', |
|
'distutils.core', |
|
'distutils.debug', |
|
'distutils.dep_util', |
|
'distutils.dir_util', |
|
'distutils.dist', |
|
'distutils.errors', |
|
'distutils.extension', |
|
'distutils.fancy_getopt', |
|
'distutils.file_util', |
|
'distutils.spawn', |
|
'distutils.util', |
|
'distutils.version', |
|
'distutils.command.build_ext', |
|
'distutils.command.build', |
|
'distutils.command.install', |
|
|
|
# needed for gtk's find_program() scripts |
|
'filecmp', |
|
]
|
|
|