| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- # ------------------------------------------------------------------
- # Copyright (c) 2025 PyInstaller Development Team.
- #
- # This file is distributed under the terms of the GNU General Public
- # License (version 2.0 or later).
- #
- # The full license is available in LICENSE, distributed with
- # this software.
- #
- # SPDX-License-Identifier: GPL-2.0-or-later
- # ------------------------------------------------------------------
- from PyInstaller import compat
- from PyInstaller.utils.hooks import collect_dynamic_libs, collect_data_files
- if compat.is_win:
- # On Windows, pymeshlab wheel seems to include Qt libraries and plugins (and their dependencies, as well as meshlab
- # plugins), as well as some of data files (such as translation files); all in the top-level package directory.
- binaries = collect_dynamic_libs('pymeshlab')
- datas = collect_data_files('pymeshlab')
- elif compat.is_linux:
- # On linux, only Qt libraries and plugins (and their dependencies, as well as meshlab plugins) seem to be included;
- # all in lib subdir.
- # NOTE: collect_dynamic_libs() does not collect versioned .so files; those are picked up by collect_data_files().
- binaries = collect_dynamic_libs('pymeshlab.lib') + collect_data_files('pymeshlab.lib')
- elif compat.is_darwin:
- # On macOS, Frameworks sub-directory contains Qt .framework bundles and other shared libraries, all of which seem
- # to be picked up by binary dependency analysis. Avoid explicitly collecting anything from there to avoid
- # interfering with PyInstaller's attempts to fix-up .framework bundle structure (see pyinstaller/pyinstaller#9335).
- # The plugins for both meshlab and Qt are in PlugIns directory, and we need to collect those.
- binaries = collect_dynamic_libs('pymeshlab.PlugIns')
- # On linux, prevent binary dependency analysis from generating symbolic links for bundles shared libraries to the
- # top-level application directory. For some god-forsaken reason, the wheel includes a copy of python shared library,
- # which might actually be ABI incompatible with version of python that frozen application is built with (for example,
- # libpython3.13.so.1.0 shipped with pymeshlab 2025.7 causes `undefined symbol: _Py_GetExecutor` in `_opcode` extension
- # collected from Fedora-provided python 3.13.11).
- if compat.is_linux:
- bindepend_symlink_suppression = [
- '**/pymeshlab/lib/*',
- ]
|