Make use of pyinstaller hooks by creating a hook that updates how the `mesonbuild` import functions. This is more or less the same as passing a bajillion arguments to pyinstaller's CLI, but allows the logic to be self-contained (and reusable). It becomes more obvious what parts of the process pertain to pyinstaller, and which parts pertain to MSI/pkg creation.pull/10212/head
parent
ff8a9c9efb
commit
258cd5d583
3 changed files with 51 additions and 50 deletions
@ -0,0 +1,49 @@ |
||||
#!hint/python3 |
||||
|
||||
""" |
||||
PyInstaller hook to make mesonbuild include everything it needs to. |
||||
""" |
||||
|
||||
import os |
||||
from glob import glob |
||||
|
||||
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 |
||||
|
||||
hiddenimports += get_all_modules_from_dir('mesonbuild/modules') |
||||
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', |
||||
] |
Loading…
Reference in new issue