| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- # ------------------------------------------------------------------
- # Copyright (c) 2021 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 pathlib
- from PyInstaller import compat
- from PyInstaller.utils.hooks import collect_dynamic_libs, get_installer, get_package_paths
- # Query the installer of the `rtree` package; in PyInstaller prior to 6.0, this might raise an exception, whereas in
- # later versions, None is returned.
- try:
- package_installer = get_installer('rtree')
- except Exception:
- package_installer = None
- if package_installer == 'conda':
- from PyInstaller.utils.hooks import conda
- # In Anaconda-packaged `rtree`, `libspatialindex` and `libspatialindex_c` shared libs are packaged in a separate
- # `libspatialindex` package. Collect the libraries into `rtree/lib` sub-directory to simulate PyPI wheel layout.
- binaries = conda.collect_dynamic_libs('libspatialindex', dest='rtree/lib', dependencies=False)
- else:
- # pip-installed package. The shared libs are usually placed in `rtree/lib` directory.
- binaries = collect_dynamic_libs('rtree')
- # With rtree >= 1.1.0, Linux PyPI wheels place the shared library in a `Rtree.libs` top-level directory.
- # In rtree 1.4.0, the directory was renamed to `rtree.libs`
- if compat.is_linux:
- _, rtree_dir = get_package_paths('rtree')
- for candidate_dir_name in ('rtree.libs', 'Rtree.libs'):
- rtree_libs_dir = pathlib.Path(rtree_dir).parent / candidate_dir_name
- if not rtree_libs_dir.is_dir():
- continue
- binaries += [
- (str(lib_file), candidate_dir_name) for lib_file in rtree_libs_dir.glob("libspatialindex*.so*")
- ]
|