# ------------------------------------------------------------------
|
# 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.GPL.txt, 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:
|
# the import will fail it the library cannot be found
|
from pylsl import pylsl
|
|
# the find_liblsl_libraries() is a generator function that yields multiple possibilities
|
for libfile in pylsl.find_liblsl_libraries():
|
if libfile:
|
break
|
except (ImportError, ModuleNotFoundError, RuntimeError) as error:
|
print(error)
|
libfile = None
|
return libfile
|
|
|
# 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 = []
|