diff options
author | Eli Schwartz <eschwartz@archlinux.org> | 2022-03-27 00:56:26 -0400 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2022-03-30 02:06:52 +0300 |
commit | 258cd5d5836a6660f1122cec274f0a947c1d0459 (patch) | |
tree | 72f1ecb04c9c3540aa03ba23ef512a2a1c00ea32 /packaging/createmsi.py | |
parent | ff8a9c9efb9937e7d7776bba8b85930ed44192fa (diff) | |
download | meson-258cd5d5836a6660f1122cec274f0a947c1d0459.zip meson-258cd5d5836a6660f1122cec274f0a947c1d0459.tar.gz meson-258cd5d5836a6660f1122cec274f0a947c1d0459.tar.bz2 |
packaging: rework how pyinstaller gets its instructions
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.
Diffstat (limited to 'packaging/createmsi.py')
-rwxr-xr-x | packaging/createmsi.py | 47 |
1 files changed, 1 insertions, 46 deletions
diff --git a/packaging/createmsi.py b/packaging/createmsi.py index 653caa5..fe49b7b 100755 --- a/packaging/createmsi.py +++ b/packaging/createmsi.py @@ -39,49 +39,6 @@ def gen_guid(): ''' return str(uuid.uuid4()).upper() -def get_all_modules_from_dir(dirname): - ''' - Get all modules required for Meson build MSI package - 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 - -def get_more_modules(): - ''' - Getter for missing Modules. - Python packagers want to be minimal and only copy the things - that they can see that being used. They are blind to many things. - ''' - return ['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', - 'filecmp', - ] - -def get_modules(): - modules = get_all_modules_from_dir('mesonbuild/modules') - modules += get_all_modules_from_dir('mesonbuild/scripts') - modules += get_more_modules() - return modules - class Node: ''' Node to hold path and directory values @@ -166,7 +123,6 @@ class PackageGenerator: if os.path.exists(sdir): shutil.rmtree(sdir) main_stage, ninja_stage = self.staging_dirs - modules = get_modules() pyinstaller = shutil.which('pyinstaller') if not pyinstaller: @@ -178,10 +134,9 @@ class PackageGenerator: shutil.rmtree(pyinstaller_tmpdir) pyinst_cmd = [pyinstaller, '--clean', + '--additional-hooks-dir=packaging', '--distpath', pyinstaller_tmpdir] - for m in modules: - pyinst_cmd += ['--hidden-import', m] pyinst_cmd += ['meson.py'] subprocess.check_call(pyinst_cmd) shutil.move(pyinstaller_tmpdir + '/meson', main_stage) |