# ------------------------------------------------------------------
|
# Copyright (c) 2023 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
|
# ------------------------------------------------------------------
|
|
import os
|
from PyInstaller.utils.hooks import logger, isolated
|
|
|
def find_library():
|
# Try importing pylsl - this will fail if the shared library is unavailable.
|
try:
|
import pylsl # noqa: F401
|
except Exception:
|
return None
|
|
# Return the path to shared library that is used by pylsl.
|
try:
|
from pylsl.lib import lib as cdll # pylsl >= 0.17.0
|
except ImportError:
|
from pylsl.pylsl import lib as cdll # older versions
|
|
return cdll._name
|
|
|
# whenever a hook needs to load a 3rd party library, it needs to be done in an isolated subprocess
|
libfile = isolated.call(find_library)
|
|
if libfile:
|
# add the liblsl library to the binaries
|
# it gets packaged in pylsl/lib, which is where pylsl will look first
|
binaries = [(libfile, os.path.join('pylsl', 'lib'))]
|
else:
|
logger.warning("liblsl shared library not found - pylsl will likely fail to work!")
|
binaries = []
|